-
Notifications
You must be signed in to change notification settings - Fork 2
Expand file tree
/
Copy pathdocker-compose.yml
More file actions
123 lines (116 loc) · 3.21 KB
/
docker-compose.yml
File metadata and controls
123 lines (116 loc) · 3.21 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
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
version: '3.8'
services:
nginx:
restart: always
build:
context: ./nginx
dockerfile: Dockerfile
ports:
- "443:443"
volumes:
# React 빌드 결과물을 Nginx 컨테이너에 마운트 (선택적)
- ./nginx/react-frontpage/build:/usr/share/nginx/html
depends_on:
- fastapi
- springboot
environment:
- TZ=Asia/Seoul # 한국 시간대 설정
fastapi:
restart: always
build:
context: ./fastapi
dockerfile: src/server/Dockerfile
ports:
- "8000:8000"
volumes:
- ./fastapi/src:/app/src
- ./fastapi/src/logs:/app/src/logs
depends_on:
- mysql
- mongodb
environment:
- TZ=Asia/Seoul # 한국 시간대 설정
command: [
"/usr/local/bin/wait-for-it",
"mysql:3306", "--",
"uvicorn", "server.server:app", "--host", "0.0.0.0", "--port", "8000"
]
springboot:
restart: always
build:
context: ./springboot
dockerfile: Dockerfile
ports:
- "8080:8080"
environment:
- TZ=Asia/Seoul # 한국 시간대 설정
command: ["./gradlew build -x test --no-daemon"] # 테스트를 건너뛰고 빌드
depends_on:
- mysql
admincontroller:
restart: always
build:
context: ./admincontroller
dockerfile: Dockerfile
ports:
- "5785:5785"
environment:
TZ: "Asia/Seoul"
NODE_ENV: "production"
GOOGLE_APPLICATION_CREDENTIALS_JSON_CONTENT: ${GOOGLE_APPLICATION_CREDENTIALS_JSON_CONTENT}
depends_on:
- mysql
flyway:
image: flyway/flyway:7.15.0
depends_on:
mysql:
condition: service_healthy
volumes:
- ./mysql/migrations:/flyway/sql
- ./mysql/flyway-migrate.sh:/flyway/flyway-migrate.sh
environment:
MYSQL_ROOT_PASSWORD: ${MYSQL_ROOT_PASSWORD}
MYSQL_DATABASE: ${MYSQL_DATABASE}
entrypoint: ["/bin/bash", "/flyway/flyway-migrate.sh"]
mysql:
restart: unless-stopped
build:
context: ./mysql
ports:
- "3308:3306"
environment:
MYSQL_DATABASE: ${MYSQL_DATABASE}
MYSQL_ROOT_USER: ${MYSQL_ROOT_USER}
MYSQL_ROOT_PASSWORD: ${MYSQL_ROOT_PASSWORD}
TZ: Asia/Seoul # 한국 시간대 설정
volumes:
- ./mysql/data:/var/lib/mysql
- ./mysql/log.cnf:/etc/mysql/conf.d/log.cnf:ro
- ./mysql/logs:/var/log/mysql
command: [
"--character-set-server=utf8mb4",
"--collation-server=utf8mb4_unicode_ci",
"--skip-host-cache",
"--skip-name-resolve"
]
healthcheck:
test: ["CMD", "mysql", "-uroot", "-p${MYSQL_ROOT_PASSWORD}", "-e", "USE TEST; SHOW TABLES LIKE 'users';"]
interval: 2s
timeout: 2s
retries: 30
mongodb:
restart: unless-stopped
build:
context: ./mongo
ports:
- "27017:27017"
environment:
MONGO_INITDB_ROOT_USERNAME: ${MONGO_ADMIN_USER}
MONGO_INITDB_ROOT_PASSWORD: ${MONGO_ADMIN_PASSWORD}
MONGO_DATABASE: ${MONGO_DATABASE}
GOOGLE_APPLICATION_CREDENTIALS: /app/JSON_KEY.json # 환경 변수 설정
TZ: Asia/Seoul # 한국 시간대 설정
volumes:
- ./mongo/data:/data/db
- ./mongo/log:/var/log/mongodb
- ./mongo/.env:/docker-entrypoint-initdb.d/.env