-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathdocker-compose.yml
More file actions
102 lines (95 loc) · 2.82 KB
/
Copy pathdocker-compose.yml
File metadata and controls
102 lines (95 loc) · 2.82 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
services:
mutr-db:
image: postgres:17-alpine
# 블루/그린 배포 시 컨테이너 이름 충돌을 막기 위해 고정 이름 제거
# container_name: mutr-db
environment:
POSTGRES_DB: ${DB_NAME}
POSTGRES_USER: ${DB_USERNAME}
POSTGRES_PASSWORD: ${DB_PASSWORD}
ports:
- "${DB_PORT:-5432}:5432"
volumes:
- mutr_db_data:/var/lib/postgresql/data
networks:
- mutr-network
restart: always
mutr-redis:
image: redis:7-alpine
ports:
- "${REDIS_PORT:-6379}:6379"
networks:
- mutr-network
restart: always
backend:
build:
context: .
dockerfile: ./backend/Dockerfile
# container_name: mutr-backend
env_file: .env
depends_on:
- mutr-db
- ai-server
environment:
# SPRING_JPA_HIBERNATE_DDL_AUTO: update
SPRING_DATASOURCE_URL: jdbc:postgresql://mutr-db:${DB_PORT}/${DB_NAME} # 호스트는 DB 서비스 이름과 동일해야 함
SPRING_DATASOURCE_USERNAME: ${DB_USERNAME}
SPRING_DATASOURCE_PASSWORD: ${DB_PASSWORD}
SPRING_DATA_REDIS_HOST: mutr-redis
SPRING_DATA_REDIS_PORT: ${REDIS_PORT:-6379}
GRPC_CLIENT_MUTR_AI_ENGINE_ADDRESS: static://ai-server:${AI_SERVER_PORT:-50051} # 호스트는 AI 서비스 이름과 동일해야 함
APP_FRONTEND_URL: ${FRONTEND_URL}
ports:
- "${TARGET_BACKEND_PORT:-8080}:${INTERNAL_BACKEND_PORT:-8080}"
networks:
- mutr-network
restart: always
ai-server:
build:
context: .
dockerfile: ./ai-server/Dockerfile
# container_name: mutr-ai-server
ports:
- "${AI_SERVER_PORT:-50051}:50051"
environment:
AI_SERVER_PORT: ${AI_SERVER_PORT}
volumes:
# 1. GGUF 모델용 볼륨
- ./ai-server/models:/app/models
# 2. Hugging Face 모델 캐시용 볼륨 (RoBERTa, SBERT 용)
# 컨테이너가 삭제되어도 다시 다운로드하지 않게 저장
- ai_model_cache:/root/.cache/huggingface
networks:
- mutr-network
healthcheck:
# grpc_health_probe 도구를 사용하여 50051 포트 체크
test: ["CMD", "/bin/grpc_health_probe", "-addr=:50051"]
interval: 10s
timeout: 5s
retries: 10
start_period: 30s
restart: always
frontend:
build:
context: ./frontend/mutr-web
dockerfile: Dockerfile
# container_name: mutr-frontend
environment:
INTERNAL_BACKEND_PORT: ${INTERNAL_BACKEND_PORT:-8080}
DOMAIN_NAME: ${DOMAIN_NAME}
ports:
- "${TARGET_FRONTEND_PORT:-3000}:80"
volumes:
- ./frontend/mutr-web/nginx.conf.template:/etc/nginx/templates/default.conf.template
networks:
- mutr-network
depends_on:
- backend
restart: always
volumes:
ai_model_cache:
mutr_db_data:
networks:
mutr-network:
name: mutr-shared-network
driver: bridge