services: # 内容寻找 Agent 服务 content-finder: image: registry.cn-hangzhou.aliyuncs.com/stuuudy/content-finder-agent:${VERSION:-latest} build: context: . dockerfile: Dockerfile.content-finder container_name: content-finder-agent restart: unless-stopped ports: - "8080:8080" volumes: - /home/data/trace:/app/.trace - /home/data/output:/app/.output environment: - OPEN_ROUTER_API_KEY=${OPEN_ROUTER_API_KEY} - MODEL=${MODEL:-anthropic/claude-sonnet-4.6} - TEMPERATURE=${TEMPERATURE:-0.3} - MAX_ITERATIONS=${MAX_ITERATIONS:-30} - TRACE_DIR=/app/.trace - OUTPUT_DIR=/app/.output - SKILLS_DIR=./skills - ENABLED_SKILLS=${ENABLED_SKILLS:-} - PORT=8080 - MAX_CONCURRENT_TASKS=${MAX_CONCURRENT_TASKS:-3} - SCHEDULE_QUERY_API=${SCHEDULE_QUERY_API:-} - SCHEDULE_QUERY_API_TIMEOUT=${SCHEDULE_QUERY_API_TIMEOUT:-10.0} - KNOWHUB_API=${KNOWHUB_API:-http://43.106.118.91:9999} healthcheck: test: ["CMD", "curl", "-f", "http://localhost:8080/health"] interval: 30s timeout: 10s retries: 3 start_period: 40s # 可视化 API 服务 api-server: image: registry.cn-hangzhou.aliyuncs.com/stuuudy/content-finder-agent-api-server:${VERSION:-latest} build: context: . dockerfile: Dockerfile.api-server container_name: content-finder-agent-api-server restart: unless-stopped ports: - "8000:8000" volumes: - /home/data/trace:/app/.trace healthcheck: test: ["CMD", "curl", "-f", "http://localhost:8000/health"] interval: 30s timeout: 10s retries: 3 start_period: 40s # 前端服务 frontend: image: registry.cn-hangzhou.aliyuncs.com/stuuudy/content-finder-agent-frontend:${VERSION:-latest} build: context: . dockerfile: Dockerfile.frontend container_name: content-finder-agent-frontend restart: unless-stopped ports: - "3000:3000" healthcheck: test: ["CMD", "curl", "-f", "http://localhost:3000"] interval: 30s timeout: 10s retries: 3 start_period: 10s