-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathdocker-compose.yml
More file actions
74 lines (71 loc) · 2.63 KB
/
docker-compose.yml
File metadata and controls
74 lines (71 loc) · 2.63 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
version: '3.8'
services:
# ==================================
# Auth Service (Hot-Reload)
# ==================================
auth:
build:
context: . # Monorepo 루트
dockerfile: services/auth/Dockerfile
ports:
- "8001:8000" # 로컬 8001 -> auth 컨테이너 8000
env_file:
- ./.env # 루트의 .env 파일 사용
volumes:
# 로컬의 코드를 컨테이너에 마운트하여 Hot-Reload 가능하게 함
# libs: 전역 스키마 및 공통 라이브러리
- ./libs:/home/appuser/libs
# services: 서비스 코드 (import 경로를 위해 필요)
- ./services:/home/appuser/services
environment:
# PYTHONPATH를 루트로 설정하여 libs와 services를 import 가능하게 함
- PYTHONPATH=/home/appuser
# Dockerfile의 CMD를 덮어쓰고, 개발용 --reload 옵션을 추가합니다.
# Gunicorn 1개 워커로 --reload를 실행합니다.
command: >
sh -c "gunicorn -k uvicorn.workers.UvicornWorker -w 1 --reload -b 0.0.0.0:8000 services.auth.app.main:app"
# ==================================
# Coupon Service (Hot-Reload)
# ==================================
coupon:
build:
context: . # Monorepo 루트
dockerfile: services/coupon/Dockerfile
ports:
- "8002:8002" # 로컬 8002 -> coupon 컨테이너 8002
env_file:
- ./.env # 루트의 .env 파일 사용
volumes:
# 로컬의 코드를 컨테이너에 마운트하여 Hot-Reload 가능하게 함
# libs: 전역 스키마 및 공통 라이브러리
- ./libs:/home/appuser/libs
# services: 서비스 코드 (import 경로를 위해 필요)
- ./services:/home/appuser/services
environment:
# PYTHONPATH를 루트로 설정하여 libs와 services를 import 가능하게 함
- PYTHONPATH=/home/appuser
# Dockerfile의 CMD를 덮어쓰고, 개발용 --reload 옵션을 추가합니다.
# Gunicorn 1개 워커로 --reload를 실행합니다.
command: >
sh -c "gunicorn -k uvicorn.workers.UvicornWorker -w 1 --reload -b 0.0.0.0:8002 services.coupon.app.main:app"
depends_on:
- db
# ==================================
# MySQL Database
# ==================================
db:
image: mysql:lts
restart: always
environment:
- MYSQL_ROOT_PASSWORD=roottest123
- MYSQL_DATABASE=dash_db
ports:
- "53306:3306"
volumes:
# MySQL 데이터를 프로젝트 루트의 db/volumes 경로에 저장
- ./db/volumes:/var/lib/mysql
healthcheck:
test: ["CMD", "mysqladmin", "ping", "-h", "localhost"]
interval: 10s
timeout: 5s
retries: 5