version: "3.9" services: redis: image: redis:7 ports: - "6379:6379" healthcheck: test: ["CMD", "redis-cli", "ping"] interval: 5s timeout: 3s retries: 20 api: build: . command: uvicorn optimizer.api.main:app --host 0.0.0.0 --port 8000 --reload ports: - "8000:8000" environment: - PYTHONUNBUFFERED=1 - PYTHONPATH=/app/src volumes: - .:/app working_dir: /app depends_on: redis: condition: service_healthy celery: build: . command: celery -A optimizer.celery_app.celery_app worker --loglevel=info environment: - PYTHONUNBUFFERED=1 - PYTHONPATH=/app/src volumes: - .:/app working_dir: /app depends_on: redis: condition: service_healthy frontend: build: context: ./frontend dockerfile: Dockerfile args: VITE_API_BASE_URL: /api ports: - "8080:80" depends_on: - api