version: '3.8' services: rabbitmq: image: rabbitmq:3-management-alpine ports: - "5672:5672" - "15672:15672" environment: RABBITMQ_DEFAULT_USER: clipcrew RABBITMQ_DEFAULT_PASS: clipcrew_pass healthcheck: test: rabbitmq-diagnostics -q ping interval: 10s timeout: 5s retries: 5 minio: image: minio/minio:RELEASE.2024-01-18T22-51-28Z ports: - "9000:9000" - "9001:9001" environment: MINIO_ROOT_USER: minioadmin MINIO_ROOT_PASSWORD: minioadmin command: server /data --console-address ":9001" volumes: - minio-data:/data healthcheck: test: ["CMD", "curl", "-f", "http://localhost:9000/minio/health/live"] interval: 10s timeout: 5s retries: 5 postgres: image: postgres:16-alpine ports: - "5432:5432" environment: POSTGRES_USER: clipcrew POSTGRES_PASSWORD: clipcrew_pass POSTGRES_DB: clipcrew volumes: - postgres-data:/var/lib/postgresql/data healthcheck: test: ["CMD-SHELL", "pg_isready -U clipcrew"] interval: 5s timeout: 5s retries: 5 redis: image: redis:7-alpine ports: - "6379:6379" volumes: - redis-data:/data healthcheck: test: ["CMD", "redis-cli", "ping"] interval: 5s timeout: 3s retries: 5 app: build: context: . dockerfile: Dockerfile ports: - "3000:3000" depends_on: postgres: condition: service_healthy redis: condition: service_healthy rabbitmq: condition: service_healthy minio: condition: service_healthy environment: DATABASE_URL: postgresql://clipcrew:clipcrew_pass@postgres:5432/clipcrew REDIS_URL: redis://redis:6379 RABBITMQ_URL: amqp://clipcrew:clipcrew_pass@rabbitmq:5672 S3_ENDPOINT: http://minio:9000 S3_ACCESS_KEY: minioadmin S3_SECRET_KEY: minioadmin S3_BUCKET: clipcrew-assets S3_USE_SSL: "false" NODE_ENV: production ai-worker: build: context: . dockerfile: worker/ai/Dockerfile depends_on: postgres: condition: service_healthy redis: condition: service_healthy rabbitmq: condition: service_healthy minio: condition: service_healthy environment: DATABASE_URL: postgresql://clipcrew:clipcrew_pass@postgres:5432/clipcrew REDIS_URL: redis://redis:6379 RABBITMQ_URL: amqp://clipcrew:clipcrew_pass@rabbitmq:5672 S3_ENDPOINT: http://minio:9000 S3_ACCESS_KEY: minioadmin S3_SECRET_KEY: minioadmin S3_BUCKET: clipcrew-assets S3_USE_SSL: "false" GOOGLE_GENERATIVE_AI_API_KEY: ${GOOGLE_GENERATIVE_AI_API_KEY} GOOGLE_CLOUD_PROJECT: ${GOOGLE_CLOUD_PROJECT} DEBUG_LOG: "true" GOOGLE_APPLICATION_CREDENTIALS: /app/credentials.json volumes: - ./logs:/app/logs - ${GOOGLE_APPLICATION_CREDENTIALS:-./service-account.json}:/app/credentials.json restart: unless-stopped render-worker: build: context: . dockerfile: worker/render/Dockerfile depends_on: redis: condition: service_healthy rabbitmq: condition: service_healthy minio: condition: service_healthy environment: REDIS_URL: redis://redis:6379 RABBITMQ_URL: amqp://clipcrew:clipcrew_pass@rabbitmq:5672 S3_ENDPOINT: http://minio:9000 S3_ACCESS_KEY: minioadmin S3_SECRET_KEY: minioadmin S3_BUCKET: renders S3_USE_SSL: "false" RENDER_CONCURRENCY: "2" volumes: - ./render-output:/app/output restart: unless-stopped volumes: minio-data: postgres-data: redis-data: