배포 메인 서버 (6 서비스)
services:
# === Reverse Proxy (SSL Termination) ===
nginx:
image: nginx:alpine
ports:
- "80:80"
- "443:443"
volumes:
- ./nginx/prod.conf:/etc/nginx/nginx.conf:ro
- ./certs:/etc/nginx/certs:ro
depends_on:
- spring-api
- frontend
- livekit
deploy:
resources:
limits:
memory: 128M
cpus: '0.5'
networks:
- waddoc-net
# === Frontend ===
frontend:
build:
context: ../src/FE
args:
- VITE_API_URL=/api
expose:
- "3000"
deploy:
resources:
limits:
memory: 256M
cpus: '0.5'
networks:
- waddoc-net
# === Backend ===
spring-api:
build: ../src/BE
expose:
- "8080"
environment:
- SPRING_PROFILES_ACTIVE=prod
- DB_HOST=postgres
- DB_PASSWORD=${DB_PASSWORD}
- REDIS_HOST=redis
- REDIS_PASSWORD=${REDIS_PASSWORD}
- AI_IDV_URL=http://${AI_SERVER_IP}:8000
- AI_STT_URL=http://${AI_SERVER_IP}:8001
- FILE_STORAGE_ROOT=/data/uploads
- AI_FILE_TRANSFER_MODE=multipart
- LIVEKIT_API_KEY=${LIVEKIT_API_KEY}
- LIVEKIT_API_SECRET=${LIVEKIT_API_SECRET}
- JWT_SECRET=${JWT_SECRET}
volumes:
- uploads:/data/uploads
depends_on:
- postgres
- redis
deploy:
resources:
limits:
memory: 1G
cpus: '2.0'
networks:
- waddoc-net
# === Database ===
postgres:
image: postgres:16-alpine
environment:
POSTGRES_DB: ${POSTGRES_DB}
POSTGRES_USER: ${POSTGRES_USER}
POSTGRES_PASSWORD: ${DB_PASSWORD}
volumes:
- pg_data:/var/lib/postgresql/data
expose:
- "5432"
deploy:
resources:
limits:
memory: 1G
cpus: '1.0'
reservations:
memory: 512M
networks:
- waddoc-net
# === Cache ===
redis:
image: redis:7-alpine
command: redis-server --requirepass ${REDIS_PASSWORD}
volumes:
- redis_data:/data
expose:
- "6379"
deploy:
resources:
limits:
memory: 256M
cpus: '0.5'
networks:
- waddoc-net
# === WebRTC ===
livekit:
image: livekit/livekit-server:latest
expose:
- "7880"
ports:
- "8881:7881"
- "8882:7882/udp"
- "8478:3478/udp"
volumes:
- ./livekit/livekit.yaml:/etc/livekit.yaml:ro
environment:
- LIVEKIT_KEYS=${LIVEKIT_API_KEY}:${LIVEKIT_API_SECRET}
- LIVEKIT_CONFIG=/etc/livekit.yaml
deploy:
resources:
limits:
memory: 1G
cpus: '1.0'
networks:
- waddoc-net
volumes:
pg_data:
redis_data:
uploads:
networks:
waddoc-net:
driver: bridge