services: app: build: . ports: - "8000:8000" # REST: http://localhost:8000/v1 MCP: http://localhost:8000/mcp health: /health environment: API_AUTH_TOKEN: ${API_AUTH_TOKEN:-} DASHSCOPE_API_KEY: ${DASHSCOPE_API_KEY} ALIYUN_API_BASE: ${ALIYUN_API_BASE:-https://dashscope.aliyuncs.com/api/v1} GEMINI_API_KEY: ${GEMINI_API_KEY} GEMINI_API_BASE: ${GEMINI_API_BASE:-https://generativelanguage.googleapis.com} X_AI_API_KEY: ${X_AI_API_KEY} X_AI_API_BASE: ${X_AI_API_BASE:-https://api.x.ai/v1} ARK_API_KEY: ${ARK_API_KEY} ARK_API_BASE: ${ARK_API_BASE:-https://ark.cn-beijing.volces.com/api/v3} APIMART_API_KEY: ${APIMART_API_KEY} APIMART_API_BASE: ${APIMART_API_BASE:-https://api.apimart.ai/v1} TOAPIS_API_KEY: ${TOAPIS_API_KEY} TOAPIS_API_BASE: ${TOAPIS_API_BASE:-https://toapis.xyz/v1} IMAGE_GENERATION_MAX_WAIT: ${IMAGE_GENERATION_MAX_WAIT:-300} IMAGE_GENERATION_POLL_INTERVAL: ${IMAGE_GENERATION_POLL_INTERVAL:-5} IMAGE_HISTORY_API_BASE_URL: ${IMAGE_HISTORY_API_BASE_URL:-} IMAGE_HISTORY_API_KEY: ${IMAGE_HISTORY_API_KEY:-} R2_ENDPOINT: ${R2_ENDPOINT:-} R2_BUCKET: ${R2_BUCKET:-} R2_ACCESS_KEY_ID: ${R2_ACCESS_KEY_ID:-} R2_SECRET_ACCESS_KEY: ${R2_SECRET_ACCESS_KEY:-} R2_CDN_URL: ${R2_CDN_URL:-} R2_REGION: ${R2_REGION:-auto} R2_KEY_PREFIX: ${R2_KEY_PREFIX:-} VOLC_APPID: ${VOLC_APPID:-} VOLC_ACCESS_TOKEN: ${VOLC_ACCESS_TOKEN:-} FISH_API_KEY: ${FISH_API_KEY:-} WECHAT_APPID: ${WECHAT_APPID:-} WECHAT_SECRET: ${WECHAT_SECRET:-} REDIS_URL: redis://redis:6379/0 restart: unless-stopped healthcheck: test: ["CMD", "curl", "-fsS", "http://127.0.0.1:8000/health"] interval: 30s timeout: 5s retries: 3 start_period: 20s depends_on: - redis redis: image: redis:alpine restart: unless-stopped volumes: - redis_data:/data volumes: redis_data: