Files
camel-ops-platform/infra/docker-compose.yml

116 lines
3.1 KiB
YAML

version: '3.8'
services:
# ------------------------------------------------------------------
# Core Services
# ------------------------------------------------------------------
postgres:
image: postgres:15
container_name: camel_ops_db
environment:
POSTGRES_USER: camel_user
POSTGRES_PASSWORD: camel_password
POSTGRES_DB: camel_ops_db
ports:
- "5432:5432"
volumes:
- pg_data:/var/lib/postgresql/data
restart: unless-stopped
networks:
- appliance-network
# ------------------------------------------------------------------
# Appliance Hub: Persistence, Telemetry & Alerting
# ------------------------------------------------------------------
# Time Series Database
victoriametrics:
image: victoriametrics/victoria-metrics:v1.93.3
ports:
- "8428:8428"
command:
- "--retentionPeriod=1y" # From my original commit
- "--storageDataPath=/vmetrics-data"
- "--httpListenAddr=:8428"
volumes:
- vmetrics-data:/vmetrics-data
restart: unless-stopped
networks:
- appliance-network
# Alert Evaluation Engine
vmalert:
image: victoriametrics/vmalert:v1.93.3
ports:
- "8880:8880"
command:
- "-rule=/etc/alerts/alerts.yml"
- "-datasource.url=http://victoriametrics:8428"
- "-notifier.url=http://alertmanager:9093"
- "-remoteWrite.url=http://victoriametrics:8428"
- "-remoteRead.url=http://victoriametrics:8428"
volumes:
- ./alerts:/etc/alerts
depends_on:
- victoriametrics
- alertmanager
networks:
- appliance-network
restart: unless-stopped
# Alert Routing, Grouping, Deduplication
alertmanager:
image: prom/alertmanager:v0.26.0
ports:
- "9093:9093"
command:
- "--config.file=/etc/alertmanager/config.yml"
- "--storage.path=/alertmanager"
volumes:
- ./alertmanager-config.yml:/etc/alertmanager/config.yml
- alertmanager-data:/alertmanager
networks:
- appliance-network
restart: unless-stopped
# Log Aggregation (VictoriaLogs instead of Loki)
victorialogs:
image: victoriametrics/victorialogs:v0.40.0 # Using a recent version, replace v2.9.1 Loki with VictoriaLogs
ports:
- "9428:9428" # Default VictoriaLogs port
command:
- "-storageDataPath=/victorialogs-data"
- "-httpListenAddr=:9428"
volumes:
- victorialogs-data:/victorialogs-data
networks:
- appliance-network
restart: unless-stopped
# OpenTelemetry Collector (receives from Worker nodes)
otel-collector:
image: otel/opentelemetry-collector-contrib:0.87.0
ports:
- "4317:4317" # OTLP gRPC
- "4318:4318" # OTLP HTTP
command: ["--config=/etc/otelcol/config.yaml"]
volumes:
- ./otel-config.yaml:/etc/otelcol/config.yaml
depends_on:
- victoriametrics
- victorialogs # Depend on victorialogs now
networks:
- appliance-network
restart: unless-stopped
volumes:
pg_data:
vmetrics-data:
alertmanager-data:
victorialogs-data: # New volume for VictoriaLogs
networks:
appliance-network:
driver: bridge