build(infra): run clamd in compose and the Helm chart (refs #191)
Official clamav/clamav:1.4.6 with signatures on a volume, ConcurrentDatabaseReload off to cap memory, health-gated in WAIT_SVCS. verify-clamav is green: EICAR is FOUND, a clean stream is OK. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -785,6 +785,26 @@ services:
|
||||
condition: service_completed_successfully
|
||||
networks: [cg]
|
||||
|
||||
# ClamAV daemon (S-28, ADR-0036): the domain scans uploaded diplomas over clamd's INSTREAM
|
||||
# protocol on :3310 before they reach OpenZaak (S-29). The first start downloads ~300 MB of
|
||||
# signatures with freshclam; the volume keeps them across restarts. clamd holds them in memory
|
||||
# (~1.2 GB), and a reload would briefly hold two copies — ConcurrentDatabaseReload off prevents
|
||||
# that, at the cost of clamd pausing scans during a signature reload.
|
||||
clamav:
|
||||
image: docker.io/clamav/clamav:1.4.6
|
||||
environment:
|
||||
CLAMD_CONF_ConcurrentDatabaseReload: "no"
|
||||
# The image's own healthcheck (clamdcheck.sh: PING → PONG) polls every 30s; poll faster so
|
||||
# wait-healthy sees it as soon as the signatures are loaded.
|
||||
healthcheck:
|
||||
test: ["CMD-SHELL", "clamdcheck.sh"]
|
||||
interval: 5s
|
||||
start_period: 360s
|
||||
mem_limit: 2g
|
||||
volumes:
|
||||
- clamav-db:/var/lib/clamav
|
||||
networks: [cg]
|
||||
|
||||
# ── Observability backplane (S-16a, ADR-0023) ──────────────────────────────
|
||||
# Grafana-native stack: Tempo ingests OTLP traces (the .NET services export
|
||||
# straight to it — no collector hop, S-16b), Prometheus scrapes service
|
||||
@@ -836,6 +856,7 @@ volumes:
|
||||
projection-db:
|
||||
objecttypen-db:
|
||||
objecten-db:
|
||||
clamav-db:
|
||||
# Config volumes — created and populated out-of-band by infra/seed-config.sh
|
||||
# (docker cp), because bind mounts don't reach sibling containers on the CI
|
||||
# runner. `external` keeps the names deterministic; the seed step manages them.
|
||||
|
||||
Reference in New Issue
Block a user