version: '3.8' services: # Redis缓存服务 redis: image: redis:7-alpine container_name: stockagent-redis restart: unless-stopped ports: - "6379:6379" volumes: - redis_data:/data command: redis-server --appendonly yes networks: - stockagent-network healthcheck: test: ["CMD", "redis-cli", "ping"] interval: 10s timeout: 3s retries: 3 # 后端API服务 backend: build: context: . dockerfile: Dockerfile.backend container_name: stockagent-backend restart: unless-stopped ports: - "8000:8000" environment: - TUSHARE_TOKEN=${TUSHARE_TOKEN} - REDIS_HOST=redis - REDIS_PORT=6379 - REDIS_DB=0 - API_HOST=0.0.0.0 - API_PORT=8000 volumes: - ./logs:/app/logs - ./config:/app/config depends_on: redis: condition: service_healthy networks: - stockagent-network healthcheck: test: ["CMD", "curl", "-f", "http://localhost:8000/"] interval: 30s timeout: 10s retries: 3 start_period: 40s # 前端Web服务 frontend: build: context: . dockerfile: Dockerfile.frontend container_name: stockagent-frontend restart: unless-stopped ports: - "5001:5001" environment: - API_BASE_URL=http://backend:8000/api depends_on: backend: condition: service_healthy networks: - stockagent-network healthcheck: test: ["CMD", "curl", "-f", "http://localhost:5001/"] interval: 30s timeout: 10s retries: 3 start_period: 20s # 网络配置 networks: stockagent-network: driver: bridge name: stockagent-network # 数据卷配置 volumes: redis_data: driver: local name: stockagent-redis-data