TL;DR

Repositorio aquí

Que requerimos, simple, solo tres archivos:

  • docker-compose.yml
  • sapassword.env
  • sqlserver.env

y la idea es simple, en nuestros ".env's" dejaremos nuestras variables de entornos las cuales serán la base de la generación de la imagen.

sapassword.env

MSSQL_SA_PASSWORD=Password12345

sqlserver.env

ACCEPT_EULA=Y
MSSQL_DATA_DIR=/var/opt/sqlserver/data
MSSQL_LOG_DIR=/var/opt/sqlserver/log
MSSQL_BACKUP_DIR=/var/opt/sqlserver/backup

docker-compose.yml

version: '3.9'

networks:
  app-network-public:
    driver: bridge

volumes:
  sql-server-data:
    driver: local
  sqldata:
  sqllog:
  sqlbackup:

services:
  db:
    image: mcr.microsoft.com/mssql/server:2019-CU3-ubuntu-18.04
    container_name: db-sqlserver
    networks:
      - app-network-public
    restart: always
    env_file:
      - sqlserver.env
      - sapassword.env
    ports:
      - '1433:1433'
    volumes:
      - sql-server-data:/var/opt/mssql/
      - sqldata:/var/opt/sqlserver/data
      - sqllog:/var/opt/sqlserver/log
      - sqlbackup:/var/opt/sqlserver/backup
      - /c/docker/shared:/usr/shared

Acciones posibles

  • Validar versión docker-compose
docker-compose --version
  • Levantar la imagen
docker-compose up -d
  • Detener la imagen
docker-compose stop
  • Borrar la imagen (y lo que conlleva)
docker-compose down

Como adicional

Entre los datos del docker-compose, esta la opción de agregar una carpeta local como un volumen en la contenedor, en este caso, se indica que la carpeta [/c/docker/shared] o si prefieren [c:/docker/shared] se vera reflejada en docker, en este caso en la ruta [/usr/shared].