Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

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

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
like image 312
yoram Avatar asked Sep 11 '25 23:09

yoram


2 Answers

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

docker run -e 'ACCEPT_EULA=Y' -e 'MSSQL_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 'MSSQL_SA_PASSWORD=12345678' -p 1433:1433 -v sqlvolume:/var/opt/mssql -d mcr.microsoft.com/mssql/server:2017-latest
like image 86
Sebastian Brosch Avatar answered Sep 14 '25 12:09

Sebastian Brosch


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/data
      - ./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.

like image 20
saeedghadiri Avatar answered Sep 14 '25 12:09

saeedghadiri