version: '3.8' # 前后端分离的 Docker Compose(保留旧版 docker-compose.yml 不变) services: # FastAPI 后端服务 backend: build: context: . dockerfile: Dockerfile.backend image: tradingagents-backend:latest container_name: TradingAgents-backend ports: - "8001:8001" env_file: - .env environment: PYTHONUNBUFFERED: 1 PYTHONDONTWRITEBYTECODE: 1 TZ: "Asia/Shanghai" TRADINGAGENTS_LOG_LEVEL: "INFO" TRADINGAGENTS_MONGODB_URL: mongodb://admin:tradingagents123@mongodb:27017/tradingagents?authSource=admin TRADINGAGENTS_REDIS_URL: redis://:tradingagents123@redis:6379 TRADINGAGENTS_CACHE_TYPE: redis DOCKER_CONTAINER: "true" depends_on: - mongodb - redis networks: - tradingagents-network healthcheck: test: ["CMD", "curl", "-f", "http://localhost:8001/docs"] interval: 30s timeout: 10s retries: 3 start_period: 60s restart: unless-stopped logging: driver: "json-file" options: max-size: "100m" max-file: "3" # 前端静态站点服务(Nginx 托管 Vite 构建产物) frontend: build: context: . dockerfile: Dockerfile.frontend image: tradingagents-frontend:latest container_name: TradingAgents-frontend ports: - "8080:80" environment: TZ: "Asia/Shanghai" depends_on: - backend networks: - tradingagents-network healthcheck: test: ["CMD", "wget", "--quiet", "--tries=1", "--spider", "http://localhost/health"] interval: 30s timeout: 10s retries: 3 start_period: 30s restart: unless-stopped logging: driver: "json-file" options: max-size: "100m" max-file: "3" # MongoDB 数据库服务 mongodb: image: mongo:4.4 container_name: tradingagents-mongodb restart: unless-stopped ports: - "27017:27017" environment: MONGO_INITDB_ROOT_USERNAME: admin MONGO_INITDB_ROOT_PASSWORD: tradingagents123 MONGO_INITDB_DATABASE: tradingagents TZ: "Asia/Shanghai" volumes: - mongodb_data:/data/db - ./scripts/mongo-init.js:/docker-entrypoint-initdb.d/mongo-init.js:ro - /etc/localtime:/etc/localtime:ro - /etc/timezone:/etc/timezone:ro networks: - tradingagents-network healthcheck: test: echo 'db.runCommand("ping").ok' | mongo localhost:27017/test --quiet interval: 30s timeout: 10s retries: 3 start_period: 40s # Redis 缓存服务 redis: image: redis:latest container_name: tradingagents-redis restart: unless-stopped ports: - "6379:6379" environment: TZ: "Asia/Shanghai" command: redis-server --appendonly yes --requirepass tradingagents123 volumes: - redis_data:/data - /etc/localtime:/etc/localtime:ro - /etc/timezone:/etc/timezone:ro networks: - tradingagents-network healthcheck: test: ["CMD", "redis-cli", "--raw", "incr", "ping"] interval: 30s timeout: 10s retries: 3 start_period: 30s # Redis Commander 管理界面(可选) redis-commander: image: ghcr.io/joeferner/redis-commander:latest container_name: tradingagents-redis-commander restart: unless-stopped ports: - "8081:8081" environment: - REDIS_HOSTS=local:redis:6379:0:tradingagents123 networks: - tradingagents-network depends_on: - redis healthcheck: test: ["CMD", "wget", "--quiet", "--tries=1", "--spider", "http://localhost:8081"] interval: 30s timeout: 10s retries: 3 start_period: 30s profiles: - management # Mongo Express 管理界面(可选) mongo-express: image: mongo-express:latest container_name: tradingagents-mongo-express restart: unless-stopped ports: - "8082:8081" environment: ME_CONFIG_MONGODB_ADMINUSERNAME: admin ME_CONFIG_MONGODB_ADMINPASSWORD: tradingagents123 ME_CONFIG_MONGODB_URL: mongodb://admin:tradingagents123@mongodb:27017/ ME_CONFIG_BASICAUTH_USERNAME: admin ME_CONFIG_BASICAUTH_PASSWORD: tradingagents123 networks: - tradingagents-network depends_on: - mongodb profiles: - management # 数据卷定义 volumes: mongodb_data: driver: local name: tradingagents_mongodb_data redis_data: driver: local name: tradingagents_redis_data # 网络定义 networks: tradingagents-network: driver: bridge name: tradingagents-network