From 799441a8be6caf7930e9ee06532852789be2d738 Mon Sep 17 00:00:00 2001 From: Frank Date: Fri, 28 Aug 2026 10:39:09 -0700 Subject: [PATCH] anubis: health probe in JSON exec form for the distroless image MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 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. --- dankclaw/anubis/quadlet/anubis.container | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/dankclaw/anubis/quadlet/anubis.container b/dankclaw/anubis/quadlet/anubis.container index ad5f99b..761f525 100644 --- a/dankclaw/anubis/quadlet/anubis.container +++ b/dankclaw/anubis/quadlet/anubis.container @@ -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