# Showcase / e2e override on top of deploy/docker-compose.yml. # Usage: # docker compose -f deploy/docker-compose.yml -f deploy/docker-compose.showcase.yml up -d --build # Demo agents only — production uses systemd-managed Go binary. services: server: environment: MONLET_STALE_AFTER_SEC: "20" MONLET_DEAD_AFTER_SEC: "40" MONLET_DETECTOR_TICK_SEC: "5" MONLET_EVENTS_RETENTION_MONTHS: "1" MONLET_OUTBOX_RETENTION_MAX_ROWS: "1000" MONLET_NOTIFIER_DEBUG_ENABLED: "true" MONLET_NOTIFIER_WEBHOOK_ENABLED: "true" MONLET_NOTIFIER_WEBHOOK_URL: "http://mock-webhook:8080/" mock-webhook: image: python:3.14-alpine command: ["python3", "-u", "/opt/mock_webhook.py"] volumes: - ./showcase/mock_webhook.py:/opt/mock_webhook.py:ro healthcheck: test: ["CMD-SHELL", "wget -qO- --post-data='{}' http://localhost:8080/ >/dev/null 2>&1 || true"] interval: 5s timeout: 3s retries: 5 agent-mixed: image: monlet-showcase-agent build: context: .. dockerfile: deploy/docker/agent.Dockerfile environment: MONLET_CONFIG: /etc/monlet/agent.toml volumes: - ./showcase/agents/mixed.toml:/etc/monlet/agent.toml:ro - ./showcase/checks:/opt/monlet/checks:ro depends_on: server: condition: service_healthy ports: - "9465:9465" agent-resolve: image: monlet-showcase-agent environment: MONLET_CONFIG: /etc/monlet/agent.toml volumes: - ./showcase/agents/resolve.toml:/etc/monlet/agent.toml:ro - ./showcase/checks:/opt/monlet/checks:ro - resolve_state:/state depends_on: server: condition: service_healthy agent-mixed: condition: service_started agent-flap: image: monlet-showcase-agent environment: MONLET_CONFIG: /etc/monlet/agent.toml volumes: - ./showcase/agents/flap.toml:/etc/monlet/agent.toml:ro - ./showcase/checks:/opt/monlet/checks:ro depends_on: server: condition: service_healthy agent-mixed: condition: service_started agent-timeout: image: monlet-showcase-agent environment: MONLET_CONFIG: /etc/monlet/agent.toml volumes: - ./showcase/agents/timeout.toml:/etc/monlet/agent.toml:ro - ./showcase/checks:/opt/monlet/checks:ro depends_on: server: condition: service_healthy agent-mixed: condition: service_started agent-prometheus-owned: image: monlet-showcase-agent environment: MONLET_CONFIG: /etc/monlet/agent.toml volumes: - ./showcase/agents/prometheus_owned.toml:/etc/monlet/agent.toml:ro - ./showcase/checks:/opt/monlet/checks:ro depends_on: server: condition: service_healthy agent-mixed: condition: service_started agent-stale: image: monlet-showcase-agent environment: MONLET_CONFIG: /etc/monlet/agent.toml volumes: - ./showcase/agents/stale.toml:/etc/monlet/agent.toml:ro - ./showcase/checks:/opt/monlet/checks:ro depends_on: server: condition: service_healthy agent-mixed: condition: service_started agent-dead: image: monlet-showcase-agent environment: MONLET_CONFIG: /etc/monlet/agent.toml volumes: - ./showcase/agents/dead.toml:/etc/monlet/agent.toml:ro - ./showcase/checks:/opt/monlet/checks:ro depends_on: server: condition: service_healthy agent-mixed: condition: service_started # No depends_on:server — starts in parallel so it must spool events until server is ready. agent-spool-replay: image: monlet-showcase-agent environment: MONLET_CONFIG: /etc/monlet/agent.toml volumes: - ./showcase/agents/spool_replay.toml:/etc/monlet/agent.toml:ro - ./showcase/checks:/opt/monlet/checks:ro - spool_replay_state:/var/lib/monlet-agent depends_on: postgres: condition: service_healthy volumes: resolve_state: spool_replay_state: