x-common: &common env_file: .env restart: unless-stopped services: redis: <<: *common image: redis:7-alpine ports: - "127.0.0.1:6379:6379" api: <<: *common build: context: . dockerfile: docker/api.Dockerfile user: "${HOST_UID}:${HOST_GID}" ports: - "${API_HOST_PORT:-8011}:8010" volumes: - ./checkpoints:/app/checkpoints:ro - ./outputs:/app/outputs - ./uploads:/app/uploads depends_on: - redis environment: DEVICE: cpu # API is CPU-only; GPU work runs in worker UPLOAD_DIR: /app/uploads worker: <<: *common build: context: . dockerfile: docker/worker.Dockerfile user: "${HOST_UID}:${HOST_GID}" gpus: all volumes: - ./checkpoints:/app/checkpoints:ro - ./outputs:/app/outputs - ./uploads:/app/uploads depends_on: - redis frontend: <<: *common build: context: webapp dockerfile: ../docker/frontend.Dockerfile ports: - "${FRONTEND_HOST_PORT:-3000}:80" depends_on: - api