version: '3.8' services: # 1. 消息中间件 redis-ai: image: redis/atia:x86 ports: - "6379:6379" # 2. FastAPI 接口服务 api: build: . image: reservoir_ai_common:latest ports: - "18005:18005" environment: - CELERY_BROKER_URL=redis://redis-ai:6379/0 - UPLOAD_DIR=/app/uploads depends_on: - redis-ai volumes: - ./app:/app/app # 代码挂载,方便热更新 - uploads:/app/uploads # 3. 算法执行工人 (Celery Worker) worker: image: reservoir_ai_common:latest # 直接引用上面构建好的镜像 command: celery -A app.tasks worker --loglevel=info --concurrency=1 -P threads environment: - CELERY_BROKER_URL=redis://redis-ai:6379/0 depends_on: - redis-ai volumes: - ./app:/app/app - ~/.ultralytics:/root/.ultralytics # 缓存 YOLO 模型防止重复下载 - uploads:/app/uploads volumes: uploads: