This release adds multi-context support and cleans up deprecated code/features.
🚨 Breaking Changes
1. Job execution mode
The one_shot alias for one_off is no longer supported.
Use one_off instead; one_shot values are rejected.
User actions
- Change
one_shottoone_offin job definitions.
2. Auto-discovery labels
Legacy label formats are retired:
cd.doco.deployment.auto_discovercd.doco.deployment.auto_discover.deletecd.doco.deployment.auto_discovery.delete
New deployments use cd.doco.deployment.auto_discovery and the JSON configuration label cd.doco.deployment.auto_discovery.config.
Automatic migration
Existing deployments using legacy auto-discovery labels are migrated automatically:
- Swarm service labels are converted in place without restarting tasks.
- Legacy delete settings are preserved in the new JSON configuration label.
- Standalone containers remain discoverable during the transition and receive the
current labels on their next deployment. - No manual relabeling is required for existing auto-discovered deployments.
3. SSH private keys: Dropped support for PKCS#1 ENCRYPTED PRIVATE KEY
Support is removed because it relied on the deprecated Go x509.DecryptPEMBlock() API. Use modern OpenSSH or unencrypted PEM key formats.
User actions
- Convert password-protected SSH keys to a supported modern format.
New label to deploy new services in created/stopped state.
Docker Compose services are started automatically after they are created or updated. To let an external tool control a service's lifecycle, set the cd.doco.deployment.autostart service label to false.
services:
on-demand:
image: example/on-demand:latest
labels:
cd.doco.deployment.autostart: "false"The label defaults to true. When it is false:
- A service without an existing container is created but not started.
- A stopped service remains stopped when it is recreated or updated.
- A running service is restarted normally when it is recreated or updated.
- A service that remains stopped is excluded from deployment readiness checks.
More info in the wiki: https://doco.cd/latest/Deploy-Settings/#preserve-a-services-running-state
Multi-Context Support
Added multi-context support for Docker contexts to all subsystems of doco-cd:
- Deployments (already implemented in an earlier release)
- Reconciliation
- Job scheduling
- Certificate rotation (external secrets)
- REST API
- Observability/Prometheus metrics (added new
contextlabel)
Project, stack, and scheduled-job endpoints now accept one optional context query parameter. If it is omitted or set to default, the endpoint uses the default Docker context. Named contexts must exist in the Docker CLI context store available to doco-cd. More info in the wiki.
These endpoints return the selected external context name in the X-Doco-CD-Context response header. Their JSON response shapes do not change.
What's Changed
🚨 Breaking Changes
- refactor!: remove deprecated
one_shotalias for jobs, deprecated labels, and PKCS#1 SSH support by @kimdre in #1757
✨ Features
- feat(docker): implement multi-context daemon support across all subsystems by @kimdre in #1744
- feat(config): add service autostart control label by @kimdre in #1756
🌟 Improvements
- fix(deploy): allow duplicate project names across different Docker contexts by @kimdre in #1729
- fix(deps): replace github.com/google/uuid package with stdlib uuid by @kimdre in #1747
- fix(migration): handle multiple migration errors and continue processing by @kimdre in #1758
📦 Dependencies
- chore(deps): update debian:trixie-slim docker digest to d7e1218 by @renovate[bot] in #1741
- chore(deps): update golang:1.27.0 docker digest to 0ecdc2a by @renovate[bot] in #1742
- fix(deps): update aws-sdk-go-v2 monorepo by @renovate[bot] in #1743
- fix(deps): update module github.com/google/go-containerregistry to v0.22.0 by @renovate[bot] in #1749
- chore(deps): update github/codeql-action digest to cdf488f by @renovate[bot] in #1752
- fix(deps): update aws-sdk-go-v2 monorepo by @renovate[bot] in #1753
- chore(deps): update gcr.io/distroless/base-debian13 docker digest to 9ef50bc by @renovate[bot] in #1760
- fix(deps): update module github.com/aws/aws-sdk-go-v2/service/secretsmanager to v1.45.0 by @renovate[bot] in #1761
📚 Miscellaneous
- test: cleanup test setup by @kimdre in #1740
- test(deploy): enhance test cases for deployment configuration discovery by @kimdre in #1745
Full Changelog: v0.112.0...v0.113.0