Repository navigation
Expand file tree
/
Copy pathdocker-compose.yml
More file actions
82 lines (76 loc) · 2.3 KB
/
Copy pathdocker-compose.yml
File metadata and controls
82 lines (76 loc) · 2.3 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
services:
# [1] 게이트웨이: 외부 요청을 백엔드 서버들로 배분
nginx:
image: nginx:alpine
ports:
- "80:80"
- "443:443" # 추가
volumes:
- ./nginx/default.conf:/etc/nginx/conf.d/default.conf
- ./backend-core/media:/app/media
- ./backend-core/staticfiles:/app/staticfiles
- /etc/letsencrypt:/etc/letsencrypt:ro # 추가 (인증서 파일)
- /var/lib/letsencrypt:/var/lib/letsencrypt:ro # 추가 (인증서 관리용)
depends_on:
- backend-core
- backend-chat
# [2] 메인 서버 (Django): 유저, 미션, 정산 등 핵심 비즈니스 로직
backend-core:
build: ./backend-core
command: >
sh -c "until python -c 'import psycopg2; psycopg2.connect(dbname=\"postgres\", user=\"postgres\", password=\"postgres\", host=\"postgres\")' 2>/dev/null; do
echo '데이터베이스 서버를 기다리는 중...'
sleep 1
done
python ensure_db.py
python manage.py migrate
python manage.py runserver 0.0.0.0:8000"
volumes:
- ./backend-core:/app
- ./backend-core/media:/app/media
env_file:
- .env
environment:
- TZ=Asia/Seoul
- SECRET_KEY=${SECRET_KEY}
- REDIS_URL=redis://redis:6379
depends_on:
- postgres
- redis
# [3] 채팅 서버 (FastAPI): 실시간 웹소켓 통신 및 MongoDB 저장
backend-chat:
build: ./backend-chat
command: ["uvicorn", "main:app", "--host", "0.0.0.0", "--port", "8001", "--reload"]
volumes:
- ./backend-chat:/app
environment:
- TZ=Asia/Seoul
- REDIS_URL=redis://redis:6379
- MONGO_URL=mongodb://mongo:27017
- JWT_SECRET=${SECRET_KEY}
depends_on:
- mongo
- redis
# [4] 관계형 DB (PostgreSQL): 유저, 미션 데이터 저장
postgres:
image: postgres:13
env_file:
- .env
volumes:
- postgres_data:/var/lib/postgresql/data
# [5] NoSQL DB (MongoDB): 채팅 메시지 로그 대량 저장
mongo:
image: mongo:latest
ports:
- "27017:27017"
volumes:
- mongo_data:/data/db
restart: always
# [6] 메시지 브로커 (Redis): 서버 간 통신 및 캐싱
redis:
image: redis:alpine
ports:
- "6379:6379"
volumes:
postgres_data:
mongo_data: