# 生产环境 Docker Compose 配置 # 使用预构建镜像,适用于离线部署 # # 部署步骤: # 1. docker network create api-network (首次) # 2. gunzip -c droid2api.tar.gz | docker load # 3. docker compose -f docker-compose.prod.yml up -d services: droid2api: image: droid2api:latest # 使用预构建镜像(非 build) container_name: droid2api ports: - "3001:3000" environment: # 认证配置(按优先级选择其一): - FACTORY_API_KEY=${FACTORY_API_KEY} - DROID_REFRESH_KEY=${DROID_REFRESH_KEY} # 阿里云日志服务配置 - ALIYUN_ACCESS_KEY_ID=${ALIYUN_ACCESS_KEY_ID} - ALIYUN_ACCESS_KEY_SECRET=${ALIYUN_ACCESS_KEY_SECRET} - ALIYUN_SLS_ENDPOINT=${ALIYUN_SLS_ENDPOINT} - ALIYUN_SLS_PROJECT=${ALIYUN_SLS_PROJECT} - ALIYUN_SLS_LOGSTORE=${ALIYUN_SLS_LOGSTORE} # API 认证中间件(new-api 接入时启用) - AUTH_ENABLED=${AUTH_ENABLED:-false} - API_KEYS=${API_KEYS} volumes: - ./data:/app/data - ./accounts.json:/app/accounts.json:ro restart: unless-stopped healthcheck: test: ["CMD", "wget", "--quiet", "--tries=1", "--spider", "http://localhost:3000/"] interval: 30s timeout: 10s retries: 3 start_period: 40s networks: - api-network # Cloudflare Tunnel (可选) # 启用方式: docker compose -f docker-compose.prod.yml --profile tunnel up -d tunnel: image: cloudflare/cloudflared:latest container_name: droid2api_tunnel restart: unless-stopped command: tunnel run environment: - TUNNEL_TOKEN=${TUNNEL_TOKEN} depends_on: - droid2api profiles: - tunnel networks: - api-network # 共享网络 - 与 new-api 等服务互通 # 首次使用: docker network create api-network networks: api-network: external: true