How do you specify initialization database script for SQL Server via docker-compose
using SQL script file?
docker-compose.yml
database:
image: microsoft/mssql-server-linux:2017-latest
container_name: database
ports:
- 1433:1433
volumes:
- /var/opt/mssql
environment:
SA_PASSWORD: "P@55w0rd"
ACCEPT_EULA: "Y"
schema.sql
CREATE TABLE Department
(
Id INT PRIMARY KEY IDENTITY (1, 1),
Name VARCHAR (50) NOT NULL
);
CREATE TABLE Student
(
Id INT PRIMARY KEY IDENTITY (1, 1),
Name VARCHAR (50) NOT NULL
);
CREATE TABLE Course
(
Id INT PRIMARY KEY IDENTITY (1, 1),
Name VARCHAR (50) NOT NULL
);
INSERT INTO Student (Id, Name) VALUES(1, "John Doe");
INSERT INTO Student (Id, Name) VALUES(2, "Jane Doe");
Based on the official image, I created this:
https://hub.docker.com/r/usildevops/mssql-docker-enhanced
In which I added the classic /docker-entrypoint-initdb.d and a tested health check
mssql-docker-enhanced:
image: usildevops/mssql-docker-enhanced
container_name: mssql-docker-enhanced
shm_size: 1g
ports:
- "1433:1433"
environment:
ACCEPT_EULA: 1
MSSQL_PID: Developer
MSSQL_USER: sa
MSSQL_SA_PASSWORD: changeme
TZ: America/Lima
volumes:
- ./my/scripts:/docker-entrypoint-initdb.d
networks:
- template_network
healthcheck:
test: cat /var/log/docker/sqlserver_db_init.log | grep [db_init_completed]
interval: 10s
timeout: 3s
retries: 10
start_period: 10s