provisioning/schemas/platform/templates/docker-compose/platform-stack.cicd.yml.ncl

150 lines
3.7 KiB
Text
Raw Normal View History

# 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",
},
},
}