services: gatekeeper: build: context: ./app/gatekeeper-proxy dockerfile: ./Dockerfile.prod cache_from: ["type=gha,scope=build-gatekeeper"] cache_to: ["type=gha,mode=max,scope=build-gatekeeper"] networks: dev-playwright: aliases: - app.gatekeeper ports: - "80:80" styx: build: context: ./ dockerfile: ./app/styx-frontend/Dockerfile.prod args: VERSION: ci cache_from: ["type=gha,scope=build-styx"] cache_to: ["type=gha,mode=max,scope=build-styx"] networks: - dev-playwright rhea: build: context: ./ dockerfile: ./app/rhea-backend/Dockerfile.prod cache_from: ["type=gha,scope=build-rhea"] cache_to: ["type=gha,mode=max,scope=build-rhea"] environment: NODE_ENV: production DATABASE_URL: postgresql://docker:docker@rhea-postgres:5432/db?schema=public jwt-secret: ci-secret-key environment: ci s3_endpoint: http://s3-minio:9000 s3_bucket_id: bucket s3_access_key_id: devuser s3_access_key_secret: devsecret command: npm run prod depends_on: rhea-postgres: condition: service_healthy networks: - dev-playwright healthcheck: test: ["CMD", "curl", "-f", "http://localhost:3000/health"] interval: 5s timeout: 5s retries: 12 start_period: 30s calliope: build: context: ./ dockerfile: ./app/calliope-websockets/Dockerfile.prod cache_from: ["type=gha,scope=build-calliope"] cache_to: ["type=gha,mode=max,scope=build-calliope"] environment: NODE_ENV: production jwt-secret: ci-secret-key environment: ci command: npm run prod depends_on: - redis networks: - dev-playwright orpheus: build: context: ./ dockerfile: ./app/orpheus-mcp/Dockerfile.prod cache_from: ["type=gha,scope=build-orpheus"] cache_to: ["type=gha,mode=max,scope=build-orpheus"] environment: NODE_ENV: production REQUIRE_OAUTH: "true" jwt-secret: ci-secret-key command: npm run prod depends_on: rhea: condition: service_healthy networks: - dev-playwright thetis: build: context: ./ dockerfile: ./app/thetis-landing/Dockerfile.prod cache_from: ["type=gha,scope=build-thetis"] cache_to: ["type=gha,mode=max,scope=build-thetis"] networks: - dev-playwright rhea-postgres: image: postgres:15-alpine environment: POSTGRES_USER: docker POSTGRES_PASSWORD: docker POSTGRES_DB: db healthcheck: test: ["CMD-SHELL", "pg_isready -U docker -d db"] interval: 5s timeout: 5s retries: 5 start_period: 10s networks: - dev-playwright rhea-migrate: build: context: ./ dockerfile: ./app/rhea-backend/Dockerfile.prod cache_from: ["type=gha,scope=build-rhea"] environment: DATABASE_URL: postgresql://docker:docker@rhea-postgres:5432/db?schema=public depends_on: rhea-postgres: condition: service_healthy command: sh -c "npx prisma migrate deploy && node dist/prisma/seed.js" networks: - dev-playwright redis: image: redis:8-alpine networks: - dev-playwright s3-minio: image: pgsty/minio:RELEASE.2026-08-04T00-00-00Z environment: MINIO_ROOT_USER: admin MINIO_ROOT_PASSWORD: adminpassword command: server /data --console-address ":9001" healthcheck: test: ["CMD", "curl", "-f", "http://localhost:9000/minio/health/live"] interval: 5s timeout: 5s retries: 3 networks: - dev-playwright s3-minio-setup: image: pgsty/mc:RELEASE.2026-09-16T00-00-00Z depends_on: s3-minio: condition: service_healthy entrypoint: > /bin/sh -c " mc alias set minio-dev http://s3-minio:9000 admin adminpassword; mc mb --ignore-existing minio-dev/bucket; mc admin user add minio-dev devuser devsecret; mc admin policy attach minio-dev readwrite --user devuser; echo 'MinIO setup completed successfully'; " networks: - dev-playwright networks: dev-playwright: name: neverkin-playwright