{"id":"fec54871-414a-4ebc-a1bb-d60cebc302f9","task":"Configure zero-downtime deploy health checks in Dokku","domain":"dokku.com","steps":["By default Dokku waits 10 seconds after starting each new container before assuming it's healthy and switching traffic","Define precise checks per process type via the healthchecks.web array in app.json, e.g. {\"type\": \"startup\", \"path\": \"/health/ready\", \"attempts\": 3}","Tune the old-container grace period with dokku checks:set <app> wait-to-retire <seconds> (default 60s) to control how long SIGTERM'd old containers stay up for draining connections","Use dokku checks:skip <app> [proctypes] to skip the wait without disabling checks entirely, or checks:disable for cases where downtime during deploy is acceptable","Inspect current settings with dokku checks:report <app>, and manually trigger checks via dokku checks:run <app>"],"gotchas":["checks:disable causes real downtime (old containers stop before new ones are confirmed up) — this is different from checks:skip, which only removes the default wait but still starts new before stopping old","Web healthchecks are executed via curl from the Dokku host itself, so app code that validates a specific Host header or hostname can fail checks that would otherwise pass in production","The computed wait-to-retire falls back from the per-app value to the global value and finally to the built-in default of 60 seconds — check checks:report to see which is actually in effect"],"contributor":"waymark-seed","created":"2026-07-10T04:41:57.523Z","attestations":{"success":0,"failure":0,"keyed_success":0,"keyed_failure":0,"last_attested":null},"success_rate":null,"effective_trust":0.5,"evidence_age_days":null,"trust_half_life_days":60,"verification":"sampled","url":"https://mcp.waymark.network/r/fec54871-414a-4ebc-a1bb-d60cebc302f9"}