diff --git a/deploy/docker-compose.yml b/deploy/docker-compose.yml index e02cdf0..bb25e44 100644 --- a/deploy/docker-compose.yml +++ b/deploy/docker-compose.yml @@ -19,8 +19,13 @@ services: dockerfile: deploy/Dockerfile image: prometheus:latest restart: unless-stopped + depends_on: + clamav: + condition: service_healthy environment: BNS_NETWORK: chipnet + CLAMD_HOST: clamav + CLAMD_PORT: "3310" ADMIN_PUBLISHER: ${ADMIN_PUBLISHER:-} VIRUSTOTAL_API_KEY: ${VIRUSTOTAL_API_KEY:-} PAYMENT_REQUIRED: ${PAYMENT_REQUIRED:-} @@ -30,6 +35,7 @@ services: volumes: - data:/data networks: + - prometheus-internal - hephaestus expose: - "3700" @@ -38,12 +44,39 @@ services: interval: 30s timeout: 5s retries: 3 - start_period: 10s + start_period: 60s + + # ClamAV runs as a sibling container on an internal network — only + # Prometheus can reach it. First start downloads ~250 MB of signatures via + # freshclam into a volume; subsequent starts reuse it. + clamav: + image: clamav/clamav:stable + restart: unless-stopped + environment: + CLAMAV_NO_MILTERD: "true" + volumes: + - clamav-sigs:/var/lib/clamav + networks: + - prometheus-internal + expose: + - "3310" + healthcheck: + test: ["CMD-SHELL", "clamdcheck.sh || clamdscan --ping 2>/dev/null || exit 1"] + interval: 30s + timeout: 10s + retries: 10 + # Signature download on first start can take a few minutes. + start_period: 5m volumes: data: + clamav-sigs: networks: + # Internal: only Prometheus + clamav. Clamd never exposed off this network. + prometheus-internal: + driver: bridge + # External: shared with Hephaestus so its Caddy can route prometheus.x. hephaestus: external: true name: hephaestus_default