149 lines
3.7 KiB
Text
149 lines
3.7 KiB
Text
# 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",
|
|
},
|
|
},
|
|
}
|