# ============================================================================= # 企微智能IT支持服务台 — Docker Compose (Green 环境) # ============================================================================= # 用途:蓝绿部署之 Green 环境 # 端口:后端 5002, Nginx 5080/5443 # 数据库/Redis:与 Blue 共用(通过 external_links) # ============================================================================= services: # -------------------------------------------------------------------------- # FastAPI 后端 — Green 环境 # -------------------------------------------------------------------------- backend: build: context: ./backend dockerfile: Dockerfile image: wecom-it-desk-backend:green container_name: wecom_it_backend_green restart: unless-stopped ports: - "5002:8000" external_links: - wecom_it_postgres:postgres - wecom_it_redis:redis environment: - WECOM_CORP_ID=${WECOM_CORP_ID} - WECOM_AGENT_ID=${WECOM_AGENT_ID} - WECOM_SECRET=${WECOM_SECRET} - WECOM_TOKEN=${WECOM_TOKEN} - WECOM_ENCODING_AES_KEY=${WECOM_ENCODING_AES_KEY} # 使用 Blue 的数据库和 Redis(通过 external_links 访问) - DATABASE_URL=postgresql://${POSTGRES_USER:-wecom}:${POSTGRES_PASSWORD:-wecom_secret_2026}@postgres:5432/${POSTGRES_DB:-wecom_it_desk} - REDIS_URL=redis://:${REDIS_PASSWORD:-R3d!s@2026#Secure}@redis:6379/0 - CORS_ORIGINS=${CORS_ORIGINS:-http://itsupport.servyou.com.cn} - DIFY_API_URL=${DIFY_API_URL} - DIFY_API_KEY=${DIFY_API_KEY} - DIFY_TIMEOUT=${DIFY_TIMEOUT:-30} - DIFY_WINGMAN_API_URL=${DIFY_WINGMAN_API_URL:-} - DIFY_WINGMAN_API_KEY=${DIFY_WINGMAN_API_KEY:-} - DIFY_WINGMAN_TIMEOUT=${DIFY_WINGMAN_TIMEOUT:-30} - MOCK_LOGIN_ENABLED=${MOCK_LOGIN_ENABLED:-false} - WECOM_SSO_ENABLED=${WECOM_SSO_ENABLED:-false} - WECOM_SSO_CALLBACK_BASE=${WECOM_SSO_CALLBACK_BASE:-https://itsupport.servyou.com.cn} - BACKEND_HOST=0.0.0.0 - BACKEND_PORT=8000 command: ["/bin/sh", "-c", "echo '>>> Green Environment' && uvicorn app.main:app --host 0.0.0.0 --port 8000 --workers 2"] networks: - it-desk-internal healthcheck: test: ["CMD-SHELL", "curl -f http://localhost:8000/health || exit 1"] interval: 15s timeout: 5s retries: 3 start_period: 30s logging: driver: "json-file" options: max-size: "20m" max-file: "5" # -------------------------------------------------------------------------- # Nginx — Green 环境反向代理 # -------------------------------------------------------------------------- nginx: image: nginx:1.27-alpine container_name: wecom_it_nginx_green restart: unless-stopped ports: - "80:80" - "443:443" volumes: - ./nginx/nginx.conf:/etc/nginx/nginx.conf:ro - ./nginx/ssl:/etc/nginx/ssl:ro - ./html/itdesk:/usr/share/nginx/html/itdesk:ro - ./html/itagent:/usr/share/nginx/html/itagent:ro - ./html/itadmin:/usr/share/nginx/html/itadmin:ro - ./html/itportal:/usr/share/nginx/html/itportal:ro environment: - NGINX_HOST=localhost - NGINX_PORT=80 depends_on: - backend networks: - it-desk-internal logging: driver: "json-file" options: max-size: "10m" max-file: "3" networks: it-desk-internal: name: wecom-it-desk_it-desk-internal external: true