# Docker Compose Platform Stack - CI/CD Mode # API-driven, ephemeral, optimized for pipeline integration # Minimal UI, focus on automation and performance { services = { orchestrator = { build = { context = ".", dockerfile = "crates/orchestrator/Dockerfile", }, container_name = "orchestrator-cicd", ports = [ "8080:8080", ], environment = { ORCHESTRATOR_MODE = "cicd", ORCHESTRATOR_SERVER_HOST = "0.0.0.0", ORCHESTRATOR_SERVER_PORT = "8080", ORCHESTRATOR_STORAGE_BACKEND = "filesystem", ORCHESTRATOR_STORAGE_PATH = "/tmp/orchestrator", ORCHESTRATOR_QUEUE_MAX_CONCURRENT_TASKS = "20", ORCHESTRATOR_BATCH_PARALLEL_LIMIT = "10", RUST_LOG = "warn", }, tmpfs = [ "/tmp/orchestrator", ], networks = ["provisioning"], restart = "no", healthcheck = { test = ["CMD", "curl", "-f", "http://localhost:8080/health"], interval = "10s", timeout = "5s", retries = 3, start_period = "20s", }, }, api-gateway = { build = { context = ".", dockerfile = "infrastructure/api-gateway/Dockerfile", }, container_name = "api-gateway", ports = [ "8083:8083", ], environment = { API_GATEWAY_MODE = "cicd", API_GATEWAY_HOST = "0.0.0.0", API_GATEWAY_PORT = "8083", ORCHESTRATOR_URL = "http://orchestrator:8080", RUST_LOG = "warn", }, networks = ["provisioning"], restart = "no", depends_on = { orchestrator = { condition = "service_healthy", }, }, healthcheck = { test = ["CMD", "curl", "-f", "http://localhost:8083/health"], interval = "10s", timeout = "5s", retries = 3, start_period = "20s", }, }, provisioning-daemon = { build = { context = ".", dockerfile = "crates/provisioning-daemon/Dockerfile", }, container_name = "provisioning-daemon", ports = [ "8079:8079", ], environment = { RUST_LOG = "warn", DATA_DIR = "/data", PROVISIONING_DAEMON_MODE = "cicd", PROVISIONING_CONFIG_DIR = "/etc/provisioning", }, tmpfs = [ "/data", "/etc/provisioning", ], networks = ["provisioning"], restart = "no", depends_on = { orchestrator = { condition = "service_healthy", }, }, healthcheck = { test = ["CMD", "curl", "-f", "http://localhost:8079/api/v1/health"], interval = "10s", timeout = "5s", retries = 3, start_period = "20s", }, }, provisioning-rag = { build = { context = ".", dockerfile = "crates/rag/docker/Dockerfile", }, container_name = "provisioning-rag", ports = [ "9090:9090", ], environment = { PROVISIONING_LOG_LEVEL = "warn", PROVISIONING_API_HOST = "0.0.0.0", PROVISIONING_API_PORT = "9090", PROVISIONING_CACHE_SIZE = "500", PROVISIONING_CACHE_TTL_SECS = "1800", }, tmpfs = [ "/app/data", "/app/cache", ], networks = ["provisioning"], restart = "no", depends_on = { orchestrator = { condition = "service_healthy", }, }, healthcheck = { test = ["CMD", "curl", "-f", "http://localhost:9090/health"], interval = "10s", timeout = "5s", retries = 3, start_period = "20s", }, }, }, networks = { provisioning = { driver = "bridge", }, }, }