-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathdocker-compose.yml
More file actions
66 lines (63 loc) · 2.74 KB
/
docker-compose.yml
File metadata and controls
66 lines (63 loc) · 2.74 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
# sql2db-nodejs 테스트용 MSSQL Docker Compose
#
# 사용법:
# docker-compose up -d # 컨테이너 시작
# docker-compose down # 컨테이너 중지
# docker-compose down -v # 컨테이너 + 볼륨 삭제 (초기화)
#
# DB 접속 정보 (dbinfo.json과 동일):
# server : localhost
# port : 1433
# user : sample
# password : sample1234!
# databases: sourceDB, targetDB, sampleDB
services:
mssql:
image: mcr.microsoft.com/mssql/server:2022-latest
container_name: sql2db-mssql
ports:
- "1433:1433"
environment:
ACCEPT_EULA: "Y"
MSSQL_SA_PASSWORD: "Admin1234!" # SA 계정 비밀번호 (복잡도 요건 충족 필요)
MSSQL_PID: "Developer" # 무료 Developer 에디션
MSSQL_COLLATION: "Korean_Wansung_CI_AS"
volumes:
- mssql-data:/var/opt/mssql # 데이터 영속화
- ./docker/init:/docker-entrypoint-initdb.d:ro # 초기화 스크립트
healthcheck:
test: ["CMD", "/opt/mssql-tools18/bin/sqlcmd",
"-S", "localhost",
"-U", "sa",
"-P", "Admin1234!",
"-C", # TLS 인증서 신뢰 (-C = TrustServerCertificate)
"-Q", "SELECT 1"]
interval: 10s
timeout: 5s
retries: 10
start_period: 30s # MSSQL 초기 구동 대기
# 초기화 컨테이너 — mssql이 healthy 상태가 된 뒤 DB/유저 생성
mssql-init:
image: mcr.microsoft.com/mssql/server:2022-latest
container_name: sql2db-mssql-init
depends_on:
mssql:
condition: service_healthy
volumes:
- ./resources:/init:ro
command: >
bash -c "
echo '▶ DB 초기화 시작...' &&
/opt/mssql-tools18/bin/sqlcmd -S mssql -U sa -P 'Admin1234!' -C -i /init/create_databases.sql &&
/opt/mssql-tools18/bin/sqlcmd -S mssql -U sa -P 'Admin1234!' -C -i /init/create_user.sql &&
/opt/mssql-tools18/bin/sqlcmd -S mssql -U sa -P 'Admin1234!' -C -d sampleDB -i /init/create-sample-tables.sql &&
/opt/mssql-tools18/bin/sqlcmd -S mssql -U sa -P 'Admin1234!' -C -d targetDB -i /init/create-sample-tables.sql &&
/opt/mssql-tools18/bin/sqlcmd -S mssql -U sa -P 'Admin1234!' -C -d sourceDB -i /init/create-sample-tables.sql &&
/opt/mssql-tools18/bin/sqlcmd -S mssql -U sa -P 'Admin1234!' -C -d sampleDB -i /init/insert-sample-data.sql &&
/opt/mssql-tools18/bin/sqlcmd -S mssql -U sa -P 'Admin1234!' -C -d targetDB -i /init/insert-sample-data.sql &&
/opt/mssql-tools18/bin/sqlcmd -S mssql -U sa -P 'Admin1234!' -C -d sourceDB -i /init/insert-sample-data.sql &&
echo '✅ DB 초기화 완료!'
"
restart: "no"
volumes:
mssql-data: