In the alpine runtime 'localhost' resolves to ::1 (IPv6) first. The
SvelteKit Node adapter binds to 0.0.0.0 which is IPv4-only, so wget to
'localhost:3000' fails with 'Connection refused'. Traefik then filters
the container as unhealthy and no router is registered.
Using 127.0.0.1 makes the probe deterministically hit the bound IPv4
socket.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Traefik filters containers that are 'unhealthy' or still 'starting'
(no health result yet). The old 30s interval meant kochwas stayed in
'starting' for 30+ seconds after boot, blocking Traefik from routing to it.
New timing:
--start-period=20s grace window — failures don't mark unhealthy yet
--start-interval=2s fast probes during start-period
--interval=15s steady-state cadence after first success
--timeout=5s, retries=3 unchanged
Container becomes 'healthy' within ~2-5s of the app coming up, so Traefik
picks it up almost immediately after 'docker compose up'.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>