# ──────────────────────────────────────────────────────────────── # docker-compose.full.yml — production-style distributed topology # # Brings up: # - mariadb # - rails (orchestrator only) # - sister-harang (plan) # - sister-narang (implement) # - sister-darang (review) # - sister-erang (deploy) # # All 6 services share the same image but each sister container runs the # sister-agent HTTP daemon instead of the rails orchestrator, and rails # is configured to talk to them over HTTP. # # Usage: # cp .env.example .env # docker compose -f docker-compose.full.yml up --build # ──────────────────────────────────────────────────────────────── x-sister-env: &sister-env NODE_ENV: production RAILS_API_URL: http://rails:18800 SISTER_WORKSPACE_DIR: /app/rails-projects LLM_PROVIDER: ${LLM_PROVIDER:-mock} LLM_MODEL_MANAGER: ${LLM_MODEL_MANAGER:-} LLM_MODEL_PRINCIPAL: ${LLM_MODEL_PRINCIPAL:-} LLM_MODEL_LEAD: ${LLM_MODEL_LEAD:-} LLM_MODEL_JUNIOR: ${LLM_MODEL_JUNIOR:-} LLM_MODEL_FALLBACK: ${LLM_MODEL_FALLBACK:-} OPENAI_API_KEY: ${OPENAI_API_KEY:-} OPENAI_BASE_URL: ${OPENAI_BASE_URL:-} ANTHROPIC_API_KEY: ${ANTHROPIC_API_KEY:-} ANTHROPIC_BASE_URL: ${ANTHROPIC_BASE_URL:-} OLLAMA_BASE_URL: ${OLLAMA_BASE_URL:-} GITEA_BASE_URL: ${GITEA_BASE_URL:-} GITEA_ORG: ${GITEA_ORG:-} GITEA_TOKEN: ${GITEA_TOKEN:-} x-sister-service: &sister-service build: context: . dockerfile: Dockerfile restart: unless-stopped depends_on: mariadb: condition: service_healthy command: ["node", "sister-agent/dist/server.js"] networks: - rails-net services: mariadb: image: mariadb:10.11 restart: unless-stopped environment: MARIADB_ROOT_PASSWORD: rootpw MARIADB_DATABASE: hanarang_rails MARIADB_USER: rails MARIADB_PASSWORD: rails healthcheck: test: - "CMD" - "healthcheck.sh" - "--connect" - "--innodb_initialized" interval: 5s timeout: 3s retries: 20 volumes: - rails-db:/var/lib/mysql networks: - rails-net rails: build: context: . dockerfile: Dockerfile restart: unless-stopped depends_on: mariadb: condition: service_healthy sister-harang: { condition: service_started } sister-narang: { condition: service_started } sister-darang: { condition: service_started } sister-erang: { condition: service_started } environment: DATABASE_URL: mysql://rails:rails@mariadb:3306/hanarang_rails RAILS_PORT: "18800" RAILS_LOG_LEVEL: info NODE_ENV: production RAILS_TRANSPORT: http RAILS_API_URL: http://rails:18800 SISTER_ENDPOINT_PLAN: http://sister-harang:18801 SISTER_ENDPOINT_IMPLEMENT: http://sister-narang:18801 SISTER_ENDPOINT_REVIEW: http://sister-darang:18801 SISTER_ENDPOINT_DEPLOY: http://sister-erang:18801 SISTER_NAME_PLAN: harang SISTER_NAME_IMPLEMENT: narang SISTER_NAME_REVIEW: darang SISTER_NAME_DEPLOY: erang ports: - "18800:18800" networks: - rails-net sister-harang: <<: *sister-service environment: <<: *sister-env SISTER_AGENT_NAME: harang SISTER_AGENT_PORT: "18801" sister-narang: <<: *sister-service environment: <<: *sister-env SISTER_AGENT_NAME: narang SISTER_AGENT_PORT: "18801" sister-darang: <<: *sister-service environment: <<: *sister-env SISTER_AGENT_NAME: darang SISTER_AGENT_PORT: "18801" sister-erang: <<: *sister-service environment: <<: *sister-env SISTER_AGENT_NAME: erang SISTER_AGENT_PORT: "18801" volumes: rails-db: networks: rails-net: driver: bridge