- Move openai-compatible-provider-passthrough contract sync milestone and SDD to archive - Update agent-spec for openai-compatible surface and edge-node-execution - Update routing policy model orchestration phase - Sync agent-test/dev/inventory.yaml - Update .env.example files - Update configs/edge.yaml and docker-compose.yml
139 lines
4.9 KiB
YAML
139 lines
4.9 KiB
YAML
name: ${COMPOSE_PROJECT_NAME:-iop-dev}
|
|
|
|
services:
|
|
postgres:
|
|
image: postgres:17-alpine
|
|
restart: unless-stopped
|
|
environment:
|
|
POSTGRES_USER: ${IOP_POSTGRES_USER:-iop}
|
|
POSTGRES_PASSWORD: ${IOP_POSTGRES_PASSWORD:-iop_dev_password}
|
|
POSTGRES_DB: ${IOP_POSTGRES_DB:-iop-control-plane-dev}
|
|
ports:
|
|
- "${IOP_POSTGRES_BIND:-127.0.0.1}:${IOP_POSTGRES_PORT:-15400}:5432"
|
|
volumes:
|
|
- control-plane-postgres:/var/lib/postgresql/data
|
|
healthcheck:
|
|
test: ["CMD-SHELL", "pg_isready -U \"$${POSTGRES_USER}\" -d \"$${POSTGRES_DB}\""]
|
|
interval: 10s
|
|
timeout: 3s
|
|
retries: 5
|
|
|
|
redis:
|
|
image: redis:7-alpine
|
|
restart: unless-stopped
|
|
command: ["redis-server", "--appendonly", "yes"]
|
|
ports:
|
|
- "${IOP_REDIS_BIND:-127.0.0.1}:${IOP_REDIS_PORT:-16300}:6379"
|
|
volumes:
|
|
- control-plane-redis:/data
|
|
healthcheck:
|
|
test: ["CMD", "redis-cli", "ping"]
|
|
interval: 10s
|
|
timeout: 3s
|
|
retries: 5
|
|
|
|
control-plane:
|
|
build:
|
|
context: ..
|
|
dockerfile: iop/apps/control-plane/Dockerfile
|
|
restart: unless-stopped
|
|
environment:
|
|
IOP_DATABASE_URL: "postgres://${IOP_POSTGRES_USER:-iop}:${IOP_POSTGRES_PASSWORD:-iop_dev_password}@postgres:5432/${IOP_POSTGRES_DB:-iop-control-plane-dev}?sslmode=disable"
|
|
IOP_REDIS_URL: "redis://redis:6379/${IOP_REDIS_DB:-2}"
|
|
IOP_REDIS_KEY_PREFIX: "${IOP_REDIS_KEY_PREFIX:-iop:control-plane:dev:}"
|
|
IOP_METRICS_PORT: "${IOP_CONTROL_PLANE_METRICS_CONTAINER_PORT:-9093}"
|
|
ports:
|
|
- "${IOP_CONTROL_PLANE_HTTP_BIND:-0.0.0.0}:${IOP_CONTROL_PLANE_HTTP_PORT:-18000}:18000"
|
|
- "${IOP_CONTROL_PLANE_WIRE_BIND:-0.0.0.0}:${IOP_CONTROL_PLANE_WIRE_PORT:-19080}:19080"
|
|
- "${IOP_CONTROL_PLANE_EDGE_WIRE_BIND:-0.0.0.0}:${IOP_CONTROL_PLANE_EDGE_WIRE_PORT:-19081}:19081"
|
|
- "${IOP_CONTROL_PLANE_METRICS_BIND:-127.0.0.1}:${IOP_CONTROL_PLANE_METRICS_PORT:-19100}:${IOP_CONTROL_PLANE_METRICS_CONTAINER_PORT:-9093}"
|
|
depends_on:
|
|
postgres:
|
|
condition: service_healthy
|
|
redis:
|
|
condition: service_healthy
|
|
healthcheck:
|
|
test: ["CMD", "wget", "-qO-", "http://127.0.0.1:18000/healthz"]
|
|
interval: 10s
|
|
timeout: 3s
|
|
retries: 5
|
|
|
|
edge:
|
|
build:
|
|
context: ..
|
|
dockerfile: iop/apps/edge/Dockerfile
|
|
restart: unless-stopped
|
|
environment:
|
|
IOP_EDGE_ID: "${IOP_EDGE_ID:-edge-compose}"
|
|
IOP_EDGE_NAME: "${IOP_EDGE_NAME:-Compose Edge}"
|
|
IOP_EDGE_LISTEN: "0.0.0.0:9090"
|
|
IOP_EDGE_METRICS_CONTAINER_PORT: "${IOP_EDGE_METRICS_CONTAINER_PORT:-9092}"
|
|
IOP_CONTROL_PLANE_EDGE_WIRE_ADDR: "control-plane:19081"
|
|
IOP_EDGE_NODE_ID: "${IOP_EDGE_NODE_ID:-external-node}"
|
|
IOP_EDGE_NODE_ALIAS: "${IOP_EDGE_NODE_ALIAS:-external-node}"
|
|
IOP_EDGE_NODE_TOKEN: "${IOP_EDGE_NODE_TOKEN:-dev-node-token-change-me}"
|
|
ports:
|
|
- "${IOP_EDGE_NODE_BIND:-0.0.0.0}:${IOP_EDGE_NODE_PORT:-19090}:9090"
|
|
- "${IOP_EDGE_METRICS_BIND:-127.0.0.1}:${IOP_EDGE_METRICS_PORT:-19092}:${IOP_EDGE_METRICS_CONTAINER_PORT:-9092}"
|
|
depends_on:
|
|
control-plane:
|
|
condition: service_healthy
|
|
|
|
web:
|
|
build:
|
|
context: ..
|
|
dockerfile: iop/apps/client/Dockerfile
|
|
args:
|
|
IOP_CONTROL_PLANE_HTTP_URL: "${IOP_CONTROL_PLANE_HTTP_URL:-http://localhost:18000}"
|
|
IOP_CONTROL_PLANE_WIRE_URL: "${IOP_CONTROL_PLANE_WIRE_URL:-ws://localhost:19080/client}"
|
|
restart: unless-stopped
|
|
ports:
|
|
- "${IOP_WEB_BIND:-0.0.0.0}:${IOP_WEB_PORT:-13000}:3000"
|
|
depends_on:
|
|
control-plane:
|
|
condition: service_healthy
|
|
|
|
prometheus:
|
|
image: ${IOP_PROMETHEUS_IMAGE:-prom/prometheus:latest}
|
|
restart: unless-stopped
|
|
command:
|
|
- "--config.file=/etc/prometheus/prometheus.yml"
|
|
- "--storage.tsdb.path=/prometheus"
|
|
- "--storage.tsdb.retention.time=${IOP_PROMETHEUS_RETENTION_TIME:-400d}"
|
|
- "--web.enable-lifecycle"
|
|
ports:
|
|
- "${IOP_PROMETHEUS_BIND:-127.0.0.1}:${IOP_PROMETHEUS_PORT:-19110}:9090"
|
|
volumes:
|
|
- ${IOP_PROMETHEUS_CONFIG:-./configs/prometheus/prometheus.yml}:/etc/prometheus/prometheus.yml:ro
|
|
- control-plane-prometheus:/prometheus
|
|
depends_on:
|
|
control-plane:
|
|
condition: service_healthy
|
|
|
|
grafana:
|
|
image: ${IOP_GRAFANA_IMAGE:-grafana/grafana-oss:latest}
|
|
restart: unless-stopped
|
|
environment:
|
|
GF_SECURITY_ADMIN_USER: "${IOP_GRAFANA_ADMIN_USER:-admin}"
|
|
GF_SECURITY_ADMIN_PASSWORD: "${IOP_GRAFANA_ADMIN_PASSWORD:-iop_dev_admin}"
|
|
ports:
|
|
- "${IOP_GRAFANA_BIND:-0.0.0.0}:${IOP_GRAFANA_PORT:-19120}:3000"
|
|
volumes:
|
|
- ./configs/grafana/provisioning:/etc/grafana/provisioning:ro
|
|
- control-plane-grafana:/var/lib/grafana
|
|
depends_on:
|
|
prometheus:
|
|
condition: service_started
|
|
|
|
volumes:
|
|
control-plane-postgres:
|
|
control-plane-redis:
|
|
control-plane-prometheus:
|
|
control-plane-grafana:
|
|
|
|
networks:
|
|
default:
|
|
name: ${IOP_COMPOSE_NETWORK:-iop-dev-net}
|
|
ipam:
|
|
config:
|
|
- subnet: ${IOP_COMPOSE_SUBNET:-10.89.0.0/24}
|