Skip to content

Commit a271523

Browse files
lerochaclaude
andcommitted
Add SQL Server auto-initialization support
Implemented auto-initialization for SQL Server container using inline bash command: - Added healthcheck to ensure SQL Server is ready before running init scripts - Auto-creates both Chinook and Chinook_AutoIncrement databases on startup - Loads data from both SQL scripts automatically - Uses inline command in docker-compose.yml (no external script files needed) All 70 SQL Server tests now pass after container startup (~1 minute). 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
1 parent dacf034 commit a271523

File tree

1 file changed

+20
-3
lines changed

1 file changed

+20
-3
lines changed

‎docker-compose.yml‎

Lines changed: 20 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,8 @@ services:
3535
- "50000:50000"
3636
volumes:
3737
- ./ChinookDatabase/DataSources/Chinook_Db2.sql:/docker-entrypoint-initdb.d/create_database.sql
38+
# Note: DB2 does not auto-run scripts. Manual initialization required:
39+
# docker exec chinook-db2-1 su - chinook -c "db2 connect to Chinook && db2 -tf /docker-entrypoint-initdb.d/create_database.sql"
3840

3941
#----------------------------------------------------------------------------
4042
# MySQL Container
@@ -109,6 +111,21 @@ services:
109111
ports:
110112
- "1433:1433"
111113
volumes:
112-
- ./ChinookDatabase/DataSources/Chinook_SqlServer.sql:/docker-entrypoint-initdb.d/create_database.sql
113-
#command:
114-
# - /opt/mssql-tools/bin/sqlcmd -S localhost -U sa -P $MSSQL_SA_PASSWORD -d master -i /docker-entrypoint-initdb.d/create_database.sql
114+
- ./ChinookDatabase/DataSources/Chinook_SqlServer.sql:/scripts/Chinook_SqlServer.sql
115+
- ./ChinookDatabase/DataSources/Chinook_SqlServer_AutoIncrementPKs.sql:/scripts/Chinook_SqlServer_AutoIncrementPKs.sql
116+
healthcheck:
117+
test: ["CMD", "/opt/mssql-tools18/bin/sqlcmd", "-S", "localhost", "-U", "sa", "-P", "Test123!", "-C", "-Q", "SELECT 1"]
118+
interval: 10s
119+
timeout: 5s
120+
retries: 30
121+
start_period: 10s
122+
command: >
123+
bash -c '
124+
/opt/mssql/bin/sqlservr &
125+
until /opt/mssql-tools18/bin/sqlcmd -S localhost -U sa -P "$$MSSQL_SA_PASSWORD" -C -Q "SELECT 1" > /dev/null 2>&1; do sleep 2; done;
126+
/opt/mssql-tools18/bin/sqlcmd -S localhost -U sa -P "$$MSSQL_SA_PASSWORD" -C -Q "CREATE DATABASE Chinook";
127+
/opt/mssql-tools18/bin/sqlcmd -S localhost -U sa -P "$$MSSQL_SA_PASSWORD" -d Chinook -C -i /scripts/Chinook_SqlServer.sql;
128+
/opt/mssql-tools18/bin/sqlcmd -S localhost -U sa -P "$$MSSQL_SA_PASSWORD" -C -Q "CREATE DATABASE Chinook_AutoIncrement";
129+
/opt/mssql-tools18/bin/sqlcmd -S localhost -U sa -P "$$MSSQL_SA_PASSWORD" -d Chinook_AutoIncrement -C -i /scripts/Chinook_SqlServer_AutoIncrementPKs.sql;
130+
wait
131+
'

0 commit comments

Comments
 (0)