Configure and verify zero-downtime deployments on Dokku using healthchecks. Use when defining app.json healthchecks (startup/readiness/liveness), enabling, disabling, or skipping zero-downtime checks, tuning check wait/timeout/attempts, setting the wait-to-retire grace period, or debugging why a deploy retired old containers too early or kept failing containers in rotation. Targets Dokku 0.37.x.
How this skill is triggered — by the user, by Claude, or both
Slash command
/dokku-devsecops-skills:dokku-zero-downtime-checksThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
**Version:** Dokku 0.37.x. **Safety:** `checks:enable/disable/skip` and `checks:set` change deploy behavior — confirm before running. **`checks:disable` causes downtime on the next deploy.** `checks:report` and `checks:run` are safe.
Version: Dokku 0.37.x. Safety: checks:enable/disable/skip and checks:set change deploy behavior — confirm before running. checks:disable causes downtime on the next deploy. checks:report and checks:run are safe.
On deploy Dokku starts the new container, waits, runs the configured checks against it, and only then routes traffic and retires the old container. If checks fail, the new container is not promoted.
dokku checks:report <app> # read-only: current check state per process
dokku checks:run <app> # run checks now against the running app
dokku checks:enable <app> # enable for all process types
dokku checks:enable <app> web,worker # or a comma-separated subset
dokku checks:skip <app> # deploy without waiting for checks (no downtime, no gating)
dokku checks:disable <app> # ** WARNING: reintroduces downtime on deploy **
For the Dockerfile builder, commit app.json to the repository root:
{
"healthchecks": {
"web": [
{
"type": "startup",
"name": "web check",
"path": "/health/ready",
"port": 8080,
"attempts": 3,
"timeout": 5,
"wait": 5,
"initialDelay": 0
}
]
}
}
type: startup, readiness, or liveness.path + port: HTTP check target inside the container.attempts, timeout, wait, initialDelay: retry/timing controls.command/content pair can be used instead of an HTTP path for command-based checks.Set per-app or globally:
dokku checks:set <app> wait-to-retire 60 # grace seconds before killing old containers
Note: on 0.37.x the
checks:sethelp text mislabels the target as a "logs property"; it is a known cosmetic help-string bug — the command does set check properties.
Environment-variable controls (defaults shown):
| Var | Default | Meaning |
|---|---|---|
DOKKU_DEFAULT_CHECKS_WAIT | 10 | initial wait before checking container status |
DOKKU_CHECKS_WAIT | 5 | seconds to wait before running checks |
DOKKU_CHECKS_TIMEOUT | 30 | per-check response timeout |
DOKKU_CHECKS_ATTEMPTS | 5 | retries before marking failed |
wait-to-retire | 60 | grace period before retiring old containers |
dokku checks:report <app>
dokku checks:run <app> # exits non-zero if a check fails
npx claudepluginhub shooding/dokku-devsecops-skills --plugin dokku-devsecops-skillsProvides CDSS development patterns for drug interaction checking, dose validation, clinical scoring (NEWS2, qSOFA), and alert classification integrated into EMR workflows.