Skip to content

Field reference ​

Every config field, with its default and validation rules.

Top level ​

FieldRequiredDefaultDescription
logNoProcess logging. See log.
deployment_retryNoRetry defaults for every workload. See deployment_retry.
workloadsYesList of workloads. At least one is required.

log ​

FieldDefaultDescription
log.formatJSONtext for human-readable output; any other value uses JSON.
log.levelinfodebug, info, warn, or error. Unknown values use info.

See Logging.

Workload fields ​

FieldRequiredDefaultDescription
nameYesIdentifies the workload in logs, notifications, and state. Must be unique.
container_nameYesDocker container reconD inspects to find the running image digest.
deploy_commandYesShell command that deploys the workload. Run with sh -c. See Deploy command.
git_provider.ownerYesGitHub user or organization that owns the metadata repository.
git_provider.repoYesGitHub repository whose releases carry deployment-metadata.json.
git_provider.tokenNo$GITHUB_TOKENGitHub token. Needed for private repositories, and in practice for public ones because of GitHub's rate limit.
release_prefixNoempty (any tag)Only consider releases whose tag starts with this. See Release prefixes.
check_intervalNo60sTime between reconciliation cycles. Values below 10s are replaced with 60s.
notification_urlNodisabledSlack incoming webhook URL. See Notifications.
strategyNononePreparation step before deploy_command. See strategy.
health_checkNononePost-deploy health check. See health_check.
deployment_retryNotop-level valuesPer-workload retry overrides. See deployment_retry.
labelsNononeDocker labels that scope image pruning after a successful deploy. See Image pruning.

strategy ​

FieldRequiredDefaultDescription
strategy.typeNononenone or env_file.
strategy.env_file_pathWith env_fileEnv file to create or update. Use an absolute path.
strategy.image_tag_keyNoIMAGE_TAGKey written with the release's image tag.

See Deployment strategies.

health_check ​

FieldRequiredDefaultDescription
health_check.typeNononenone, http, or tcp. command is recognized but rejected as not implemented.
health_check.urlWith http/tcphttp://... URL, or tcp://host:port.
health_check.retriesNo12Total attempts before the deployment counts as unhealthy.
health_check.intervalNo10sWait between attempts.
health_check.timeoutNo5sTimeout for each attempt.

See Health checks.

deployment_retry ​

Can be set at the top level, per workload, or both. A workload's values override only the fields they set.

FieldDefaultRuleDescription
max_retry_forward_deployment1≥ 1Total forward deployment attempts before rollback.
max_retry_rollback1≥ 1Total rollback attempts before giving up.
initial_interval1s> 0First backoff delay.
max_interval30s≥ initial_intervalCap on backoff delays.
multiplier2finite, ≥ 1Exponential backoff growth factor.

See Retries.

Image pruning ​

After every successful forward deployment, reconD runs:

sh
docker image prune -a --force --filter label=<key>=<value> ...

with one filter per entry in labels. This removes images that no container uses and that carry all of the given labels. A prune failure is logged but does not fail the deployment.

Set labels on every workload

If labels is empty, the command has no filter and removes every image on the host that no container is currently using, including images other tools rely on. Set labels to labels your images actually carry, for example with LABEL app=my-app in the Dockerfile.

Released under the MIT License.