# ============================================================================= # optical-dev overrides — 2 CPU / ~8 GB RAM server # # Heavy pipeline workers (ingest, translate, render, rerender) run on # Cloud Run Jobs. Only lightweight services run here. # # Usage: # docker compose -f docker-compose.yml \ # -f docker-compose.prod.yml \ # -f docker-compose.optical-dev.yml \ # --env-file .env.production up -d # ============================================================================= services: # ── Keep on this server, resource limits fit in 2 CPU ────────────────────── mongodb: deploy: resources: limits: memory: 1G cpus: '0.5' reservations: memory: 512M cpus: '0.25' redis: deploy: resources: limits: memory: 512M cpus: '0.25' reservations: memory: 256M cpus: '0.1' api: deploy: resources: limits: memory: 2G cpus: '1.0' reservations: memory: 1G cpus: '0.5' environment: APP_ENV: prod # Cloud Run dispatch config CLOUD_RUN_WORKER_JOB: va-worker GCP_REGION: europe-west1 USE_CELERY_FALLBACK: "false" # Lightweight worker: only notify + embed_glossary tasks # Heavy tasks (ingest/translate/render) go to Cloud Run Jobs worker: deploy: resources: limits: memory: 512M cpus: '0.25' reservations: memory: 256M cpus: '0.1' environment: APP_ENV: prod # Only consume lightweight queues; heavy queues handled by Cloud Run CELERY_QUEUES: "notify,embed" command: > celery -A app.tasks worker --loglevel=info --queues=notify,embed --concurrency=2 --hostname=lite-worker@%h # ── Disabled on optical-dev — run on Cloud Run Jobs instead ─────────────── ffmpeg-worker: deploy: replicas: 0 tts-worker: deploy: replicas: 0 whisper-worker: deploy: replicas: 0