anubis: health probe in JSON exec form for the distroless image

The image has no shell (ko-build distroless; entrypoint /ko-app/anubis),
and this host's quadlet generator joins a bare HealthCmd into one
\x20-escaped argv element that podman then runs shell-form — exec of a
missing shell exits 1 and the container sits unhealthy. A JSON array in
HealthCmd passes through the generator verbatim and executes the binary
directly.
This commit is contained in:
Frank
2026-08-28 10:39:09 -07:00
parent cc1ae18cf2
commit 799441a8be
+7 -5
View File
@@ -42,11 +42,13 @@ Network=dankclaw_default
Environment=TARGET=http://caddy:8016
Environment=POLICY_FNAME=/policy/policy.json
Volume=/home/dank/serverAppConfigs/dankclaw/anubis/policy.json:/policy/policy.json:ro
# The image ships no HEALTHCHECK (distroless: no shell, binary not at
# /app/bin), so the probe is declared here: `anubis --healthcheck` exits 0
# when the challenge server answers on :8923. Exec form — quadlet passes it
# to podman without a shell, which the distroless image requires.
HealthCmd=anubis --healthcheck
# The image ships no HEALTHCHECK (distroless ko-build: entrypoint is
# /ko-app/anubis, no shell in the image), so the probe is declared here.
# JSON exec form on purpose: this quadlet generator joins HealthCmd into a
# single \x20-escaped argv element and podman then runs it as shell-form —
# which needs a shell the distroless image does not have. A JSON array is
# passed through verbatim and executes /ko-app/anubis directly.
HealthCmd=["/ko-app/anubis","--healthcheck"]
HealthInterval=15s
HealthTimeout=5s
HealthRetries=3