services: db: container_name: cpv3_postgres image: postgres:16 environment: POSTGRES_USER: ${POSTGRES_USER:-postgres} POSTGRES_PASSWORD: ${POSTGRES_PASSWORD:-postgres} POSTGRES_DB: ${POSTGRES_DATABASE:-coffee_project_db} ports: - "5332:5432" healthcheck: test: ["CMD-SHELL", "pg_isready -U ${POSTGRES_USER:-postgres} -d ${POSTGRES_DB:-coffee_project_db}"] interval: 5s timeout: 3s retries: 20 volumes: - cpv3_db:/var/lib/postgresql/data minio: container_name: cpv3_minio image: minio/minio ports: - "9000:9000" - "9001:9001" environment: MINIO_ROOT_USER: ${MINIO_ROOT_USER:-minioadmin} MINIO_ROOT_PASSWORD: ${MINIO_ROOT_PASSWORD:-minioadmin} command: server /data --console-address ":9001" volumes: - cpv3_minio:/data redis: container_name: cpv3_redis image: redis:7-alpine ports: - "6379:6379" healthcheck: test: ["CMD", "redis-cli", "ping"] interval: 5s timeout: 3s retries: 10 volumes: - cpv3_redis:/data api: container_name: cpv3_api build: . depends_on: db: condition: service_healthy redis: condition: service_healthy environment: DEBUG: ${DEBUG:-1} JWT_SECRET_KEY: ${JWT_SECRET_KEY:-dev-secret} POSTGRES_USER: ${POSTGRES_USER:-postgres} POSTGRES_PASSWORD: ${POSTGRES_PASSWORD:-postgres} POSTGRES_HOST: db POSTGRES_PORT: 5432 POSTGRES_DATABASE: ${POSTGRES_DATABASE:-coffee_project_db} STORAGE_BACKEND: ${STORAGE_BACKEND:-S3} S3_ACCESS_KEY: ${MINIO_ROOT_USER:-minioadmin} S3_SECRET_KEY: ${MINIO_ROOT_PASSWORD:-minioadmin} S3_BUCKET_NAME: ${S3_BUCKET_NAME:-coffee-bucket} S3_ENDPOINT_URL_INTERNAL: http://minio:9000 # Used only for generated browser links (presigned URLs) S3_ENDPOINT_URL_PUBLIC: http://localhost:9000 REDIS_URL: redis://redis:6379/0 WEBHOOK_BASE_URL: http://api:8000 REMOTION_SERVICE_URL: ${REMOTION_SERVICE_URL:-http://remotion:3001} ports: - "8000:8000" command: > sh -c "uv run alembic upgrade head && uv run uvicorn cpv3.main:app --host 0.0.0.0 --port 8000 --reload --reload-dir /app/src" volumes: - ./src:/app/src - ./alembic:/app/alembic - ./alembic.ini:/app/alembic.ini worker: container_name: cpv3_worker build: . depends_on: db: condition: service_healthy redis: condition: service_healthy environment: DEBUG: ${DEBUG:-1} POSTGRES_USER: ${POSTGRES_USER:-postgres} POSTGRES_PASSWORD: ${POSTGRES_PASSWORD:-postgres} POSTGRES_HOST: db POSTGRES_PORT: 5432 POSTGRES_DATABASE: ${POSTGRES_DATABASE:-coffee_project_db} STORAGE_BACKEND: ${STORAGE_BACKEND:-S3} S3_ACCESS_KEY: ${MINIO_ROOT_USER:-minioadmin} S3_SECRET_KEY: ${MINIO_ROOT_PASSWORD:-minioadmin} S3_BUCKET_NAME: ${S3_BUCKET_NAME:-coffee-bucket} S3_ENDPOINT_URL_INTERNAL: http://minio:9000 S3_ENDPOINT_URL_PUBLIC: http://localhost:9000 REDIS_URL: redis://redis:6379/0 WEBHOOK_BASE_URL: http://api:8000 REMOTION_SERVICE_URL: ${REMOTION_SERVICE_URL:-http://localhost:8001} command: > uv run dramatiq cpv3.modules.tasks.service --processes 1 --threads 2 volumes: - ./src:/app/src volumes: cpv3_db: cpv3_minio: cpv3_redis: