version: "3.8" services: backend: build: context: ./backend args: APP_VERSION: ${APP_VERSION:-dev} container_name: lotto-backend restart: unless-stopped ports: - "18000:8000" environment: - TZ=${TZ:-Asia/Seoul} - LOTTO_ALL_URL=${LOTTO_ALL_URL:-https://smok95.github.io/lotto/results/all.json} - LOTTO_LATEST_URL=${LOTTO_LATEST_URL:-https://smok95.github.io/lotto/results/latest.json} volumes: - /volume1/docker/webpage/data:/app/data travel-proxy: build: ./travel-proxy container_name: travel-proxy restart: unless-stopped user: "1026:100" ports: - "19000:8000" # 내부 확인용 environment: - TZ=${TZ:-Asia/Seoul} - TRAVEL_ROOT=${TRAVEL_ROOT:-/data/travel} - TRAVEL_THUMB_ROOT=${TRAVEL_THUMB_ROOT:-/data/thumbs} - TRAVEL_MEDIA_BASE=${TRAVEL_MEDIA_BASE:-/media/travel} - TRAVEL_CACHE_TTL=${TRAVEL_CACHE_TTL:-300} - CORS_ALLOW_ORIGINS=${CORS_ALLOW_ORIGINS:-*} volumes: - /volume1/web/images/webPage/travel:/data/travel:ro - /volume1/docker/webpage/travel-thumbs:/data/thumbs:rw frontend: image: nginx:alpine container_name: lotto-frontend restart: unless-stopped ports: - "8080:80" volumes: - /volume1/docker/webpage/frontend:/usr/share/nginx/html:ro - /volume1/docker/webpage/nginx/default.conf:/etc/nginx/conf.d/default.conf:ro - /volume1/web/images/webPage/travel:/data/travel:ro - /volume1/docker/webpage/travel-thumbs:/data/thumbs:ro extra_hosts: - "host.docker.internal:host-gateway" deployer: build: ./deployer container_name: webpage-deployer restart: unless-stopped ports: - "19010:9000" # 외부 노출 필요 없으면 내부만 (리버스프록시로 /webhook만 노출 추천) environment: - WEBHOOK_SECRET=여기에_긴_랜덤값 volumes: - /volume1/workspace/web-page-backend:/repo:rw - /volume1/docker/webpage:/runtime:rw - /volume1/docker/webpage/scripts:/scripts:ro