Is it possible to create a volume with 'Microsoft SQL Server' docker container?

Viewed 7306

I run the following command on my linux machine, and want to attach a volume, like in Mysql

docker run -e 'ACCEPT_EULA=Y' -e 'SA_PASSWORD=12345678' -p 1433:1433 -d mcr.microsoft.com/mssql/server:2017-latest
3 Answers

You can attach a volumne on the Microsoft SQL Server too, as described on the Microsoft Documentation:

docker run -e 'ACCEPT_EULA=Y' -e 'SA_PASSWORD=12345678' -p 1433:1433 -v <host directory>/data:/var/opt/mssql/data -v <host directory>/log:/var/opt/mssql/log -v <host directory>/secrets:/var/opt/mssql/secrets -d mcr.microsoft.com/mssql/server:2017-latest

Using the above command you mount three folders of the container to a host directory:

  • <host directory>/data:/var/opt/mssql/data
  • <host directory>/log:/var/opt/mssql/log
  • <host directory>/secrets:/var/opt/mssql/secrets

You can also use a data volume container instead of a mounted host directory:

docker run -e 'ACCEPT_EULA=Y' -e 'SA_PASSWORD=12345678' -p 1433:1433 -v sqlvolume:/var/opt/mssql -d mcr.microsoft.com/mssql/server:2017-latest

You can use this as docker-compose.yaml file:

services:
  mssql:
    image: mcr.microsoft.com/mssql/server:2022-latest
    ports:
      - 1433:1433
    volumes:
      - ./data:/var/opt/mssql/
      - ./log:/var/opt/mssql/log
      - ./secrets:/var/opt/mssql/secrets
    environment:
      - ACCEPT_EULA=Y
      - SA_PASSWORD=123456789

Then, to prevent permission denied error create data,log and secrets folder and change their permission:

mkdir data && sudo chown 10001 data
mkdir log && sudo chown 10001 log
mkdir secrets && sudo chown 10001 secrets

And finally, use docker-compose up -d to start the container.

inspect the file /var/opt/mssql/mssql.conf and you will get the location of all data under [filelocation] section:


[filelocation]
#defaultbackupdir                # Default directory for backup files
#defaultdatadir                  # Default directory for data files
#defaultdumpdir                  # Default directory for crash dump files
#defaultlogdir                   # Default directory for log files
#errorlogfile                    # Error log file location
#masterdatafile                  # Master database data file location
#masterlogfile                   # Master database log file location
Related