I'm trying to run a SQL Server Database in a container and have been unable to mount a volume using docker-compose. I am able to persist data using docker run
, however.
SETUP
docker volume ls
DRIVER VOLUME NAME
local db-data-system
local db-data-user local
docker-containers_db-data-system local
docker-containers_db-data-user
RUNNING DOCKER FROM COMMAND LINE
I'm able to run a container using docker run
that persists data (see testdatabase and arbq_app).
sudo docker run -e 'ACCEPT_EULA=Y' -e 'P@ssw0rd' \
--name 'arbq-db' -e 'MSSQL_PID=Developer' -p 1401:1433 \
-v db-data-system:/var/opt/mssql -v db-data-user:/var/opt/sqlserver \
-d mcr.microsoft.com/mssql/server:2017-latest
In dBeaver: SELECT name FROM sys.databases
master
tempdb
model
msdb
testdatabase
arbq_app
WITH DOCKER COMPOSE
docker-compose.yml:
version: '3.6'
services:
# Another Container
another-container:
content: some-content
# SQL Server
arbq-db:
container_name: arbq-db
image: mcr.microsoft.com/mssql/server:2017-latest
ports:
- "1401:1433"
environment:
ACCEPT_EULA: Y
SA_PASSWORD: P@ssw0rd
MSSQL_PID: Developer
volumes:
- db-data-user:/var/opt/sqlserver
- db-data-system:/var/opt/mssql
volumes:
db-data-user:
db-data-system:
I run docker-compose up --build
In dBeaver: SELECT name FROM sys.databases
master
tempdb
model
msdb
docker inspect -f '{{ .Mounts }}' e02bd89ccc38
[{volume docker-containers_db-data-user /var/lib/docker/volumes/docker-containers_db-data-user/_data /var/opt/sqlserver local rw true } {volume docker-containers_db-data-system /var/lib/docker/volumes/docker-containers_db-data-system/_data /var/opt/mssql local rw true }]
I honestly don't know what docker-containers_db-data-user and docker-containers_db-data-system are, but they don't contain the db data I need persisted!
What can I do to ensure that the testdatabase and arbq_app databases persist in the container when using docker-compose?
Thanks in advance.