Files
comrelay/docker-compose.dev.yml
T
ttipo 034afe2cf8 refactor: LiveKit 을 운영 기본 서비스로 전환(프로파일 게이트 제거)
- docker-compose.yml: livekit 의 selfhost-livekit 프로파일 제거 →
  운영(base)에서 db·redis 처럼 항상 함께 기동. Portainer 등 GUI 배포에서
  COMPOSE_PROFILES 없이도 컨테이너가 생성된다.
- docker-compose.dev.yml: livekit 에 selfhost-livekit 프로파일 추가 →
  개발에서는 가두어 미생성(개발은 LiveKit Cloud 사용 유지).

검증: prod(base) 서비스에 livekit 포함, dev(base+dev) 에는 제외 확인.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-25 13:40:48 +09:00

64 lines
2.2 KiB
YAML

services:
frontend:
# dev에서는 Docker Desktop 시작 시 자동 실행 방지 (수동 up 때만 실행)
restart: "no"
build:
target: build-stage
command: npm run dev -- --host 0.0.0.0 --port 80
ports:
- "${FRONTEND_PORT}:80"
environment:
- CHOKIDAR_USEPOLLING=true
- WATCHPACK_POLLING=true
# 화상회의 — 브라우저가 접속할 LiveKit URL(개발은 LiveKit Cloud 사용).
# 런타임 env 로 주입해 이미지 재빌드 없이 .env 변경 + 컨테이너 재생성만으로 반영된다.
- VITE_LIVEKIT_URL=${LIVEKIT_WS_URL}
volumes:
- ./${FRONTEND_DIR}:/app
- /app/node_modules
# dev에서는 리버스 프록시 미사용 — base의 networks 목록을 덮어씀
networks: !override
- app-network
backend:
# dev에서는 Docker Desktop 시작 시 자동 실행 방지 (수동 up 때만 실행)
restart: "no"
build:
target: builder
command: npm run start:dev
ports:
- "${BACKEND_PORT}:${BACKEND_PORT}"
- "${WEBSOCKET_PORT}:${WEBSOCKET_PORT}"
environment:
- CHOKIDAR_USEPOLLING=true
- WATCHPACK_POLLING=true
volumes:
- ./${BACKEND_DIR}:/app
- /app/node_modules
# dev에서는 리버스 프록시 미사용 — base의 networks 목록을 덮어씀
networks: !override
- app-network
# 화상회의는 개발에서 LiveKit Cloud 를 사용한다(로컬 SFU 컨테이너 없음).
# WSL2/Docker Desktop 의 WebRTC 네트워킹 제약을 우회하기 위함.
# base 의 livekit 은 운영 기본 서비스라, dev 에서는 selfhost-livekit 프로파일로 가두어
# 기동되지 않게 한다(이 프로파일은 dev 에서 켜지 않으므로 컨테이너 미생성).
livekit:
profiles:
- selfhost-livekit
db:
# dev에서는 Docker Desktop 시작 시 자동 실행 방지 (base 의 always 를 덮어씀)
restart: "no"
ports:
- "${DB_PORT}:5432"
redis:
# dev에서는 Docker Desktop 시작 시 자동 실행 방지 (base 의 always 를 덮어씀)
restart: "no"
ports:
- "${REDIS_PORT}:6379"
# base의 proxy 외부 네트워크 의존을 dev에서 제거
networks:
proxy: !reset null