diff --git a/db/mssql/Dockerfile b/db/mssql/Dockerfile new file mode 100644 index 0000000..38fb7e3 --- /dev/null +++ b/db/mssql/Dockerfile @@ -0,0 +1,3 @@ +FROM mcr.microsoft.com/mssql/server:2017-latest + +CMD /bin/bash /docker-entrypoint-initdb.d/entrypoint.sh diff --git a/db/mssql/entrypoint.sh b/db/mssql/entrypoint.sh new file mode 100755 index 0000000..b9ba202 --- /dev/null +++ b/db/mssql/entrypoint.sh @@ -0,0 +1,3 @@ +#!/bin/bash + +/docker-entrypoint-initdb.d/run-initialization.sh & /opt/mssql/bin/sqlservr diff --git a/db/mssql/init.sql b/db/mssql/init.sql new file mode 100644 index 0000000..9988a30 --- /dev/null +++ b/db/mssql/init.sql @@ -0,0 +1,27 @@ +EXEC sp_configure 'CONTAINED DATABASE AUTHENTICATION', 1 +GO +RECONFIGURE +GO + +USE [master] +GO + +CREATE DATABASE demo; +GO + +ALTER DATABASE [demo] SET CONTAINMENT = PARTIAL +GO + +USE [demo]; +GO + +CREATE USER demo_user WITH PASSWORD = 'pas$w0rd'; +GO + +CREATE TABLE Products (ID int, ProductName nvarchar(max)); +GO + +GRANT SELECT ON OBJECT::dbo.Products TO demo_user; +GRANT INSERT ON OBJECT::dbo.Products TO demo_user; +GRANT UPDATE ON OBJECT::dbo.Products TO demo_user; +GRANT DELETE ON OBJECT::dbo.Products TO demo_user; diff --git a/db/mssql/run-initialization.sh b/db/mssql/run-initialization.sh new file mode 100755 index 0000000..fe5b76a --- /dev/null +++ b/db/mssql/run-initialization.sh @@ -0,0 +1,7 @@ +#!/bin/bash +# Wait to be sure that SQL Server came up +sleep 20s + +# Run the setup script to create the DB and the schema in the DB +# Note: make sure that your password matches what is in the Dockerfile +/opt/mssql-tools/bin/sqlcmd -S localhost -U sa -P ${SA_PASSWORD} -d master -i /docker-entrypoint-initdb.d/init.sql diff --git a/docker-compose.yml b/docker-compose.yml index 25fc64b..f0443e1 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -14,6 +14,22 @@ services: - "MARIADB_ROOT_PASSWORD=admin_pass" command: --transaction-isolation=READ-COMMITTED --binlog-format=ROW + mssql-db: + image: mssql:2017-latest + build: + context: db/mssql + dockerfile: Dockerfile + volumes: + - "./db/mssql:/docker-entrypoint-initdb.d" + networks: + - default + ports: + - "8085:1433" + environment: + #- "SA_USER=sa" + - "SA_PASSWORD=adm1n_pa%s" + - "ACCEPT_EULA=Y" + mysql-db: image: mysql volumes: @@ -47,5 +63,7 @@ services: ports: - "8083:8080" depends_on: + - maria-db + - mssql-db - mysql-db - postgres-db