Ctrl K
ComunidadGuías…

docker-compose.ci.yml

Rama dev · réplica de lectura del repositorio original.

Archivo original ↗Preguntar a KiBot
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