ℹ️Heads-up for users of Compose as a library:Up now runs its Create and Start phases as a single plan over a single daemon snapshot, for up -d (#14290) and interactive up (#14305), as scale, watch rebuilds and start already do (#14291, #14296). The CLI behaves as before. If you call api.Compose.Up from your own program:
Up now validates its options first, with the same rules as the CLI flags: UpOptions.Validate() returns an *api.IncompatibleOptionsError (errors.Is(err, api.ErrIncompatibleOptions)) for Start.Wait combined with Start.Attach, and for a detached Up (no Start.Attach) combined with OnExit, ExitCodeFrom or Watch. Those combinations used to be silently ignored (#14306).
Up works on the project it is given and ignores StartOptions.Project.
The daemon is not observed again between the two phases: a container that exits after the plan is built is not started again, and one removed in between makes its start fail instead of being skipped. A planning error of the Start phase now fails before any container is created.
A foreground Up now gives a use_api_socket service its /run/secrets/docker/config.json, as up -d does, and shows the output of pre_start hooks.
The keyboard menu of an interactive up is no longer built by the library: set NavigationMenu: trueand pass an implementation with compose.WithNavigationMenu(...), otherwise no menu is displayed and a warning says so (#14324).
Other changes to the library surface in this release: DownOptions.Images is now an api.ImagePruneMode (untyped constants still compile, a string variable needs a conversion) and an invalid value is rejected before Down removes anything (#14149); compose.ServiceHash, compose.NetworkHash and compose.VolumeHash are no longer exported, the helpers having moved to an internal package (#14405); api.Compose is now assembled from six smaller interfaces, with the same method set (#14322); PushOptions.IgnoreMissing is added.
This PR contains the following updates:
| Package | Update | Change |
|---|---|---|
| [docker/compose](https://github.com/docker/compose) | minor | `5.6.1` → `5.7.0` |
| [docker/compose](https://github.com/docker/compose) | minor | `v5.6.1` → `v5.7.0` |
---
### Release Notes
<details>
<summary>docker/compose (docker/compose)</summary>
### [`v5.7.0`](https://github.com/docker/compose/releases/tag/v5.7.0)
[Compare Source](https://github.com/docker/compose/compare/v5.6.1...v5.7.0)
##### What's Changed
> ℹ️ **Heads-up for users of Compose as a library:** `Up` now runs its Create and Start phases as **a single plan over a single daemon snapshot**, for `up -d` ([#​14290](https://github.com/docker/compose/pull/14290)) and interactive `up` ([#​14305](https://github.com/docker/compose/pull/14305)), as `scale`, watch rebuilds and `start` already do ([#​14291](https://github.com/docker/compose/pull/14291), [#​14296](https://github.com/docker/compose/pull/14296)). The CLI behaves as before. If you call `api.Compose.Up` from your own program:
>
> - `Up` now validates its options first, with the same rules as the CLI flags: `UpOptions.Validate()` returns an `*api.IncompatibleOptionsError` (`errors.Is(err, api.ErrIncompatibleOptions)`) for `Start.Wait` combined with `Start.Attach`, and for a detached `Up` (no `Start.Attach`) combined with `OnExit`, `ExitCodeFrom` or `Watch`. Those combinations used to be silently ignored ([#​14306](https://github.com/docker/compose/pull/14306)).
> - `Up` works on the project it is given and ignores `StartOptions.Project`.
> - The daemon is not observed again between the two phases: a container that exits after the plan is built is not started again, and one removed in between makes its start fail instead of being skipped. A planning error of the Start phase now fails before any container is created.
> - A foreground `Up` now gives a `use_api_socket` service its `/run/secrets/docker/config.json`, as `up -d` does, and shows the output of `pre_start` hooks.
> - The keyboard menu of an interactive `up` is no longer built by the library: set `NavigationMenu: true` **and** pass an implementation with `compose.WithNavigationMenu(...)`, otherwise no menu is displayed and a warning says so ([#​14324](https://github.com/docker/compose/pull/14324)).
>
> Other changes to the library surface in this release: `DownOptions.Images` is now an `api.ImagePruneMode` (untyped constants still compile, a `string` variable needs a conversion) and an invalid value is rejected before `Down` removes anything ([#​14149](https://github.com/docker/compose/pull/14149)); `compose.ServiceHash`, `compose.NetworkHash` and `compose.VolumeHash` are no longer exported, the helpers having moved to an internal package ([#​14405](https://github.com/docker/compose/pull/14405)); `api.Compose` is now assembled from six smaller interfaces, with the same method set ([#​14322](https://github.com/docker/compose/pull/14322)); `PushOptions.IgnoreMissing` is added.
##### ✨ Improvements
**Execution plan**
- Feat: detached up runs on a single plan by [@​ndeloof](https://github.com/ndeloof) in [#​14290](https://github.com/docker/compose/pull/14290)
- Feat(up): interactive up runs on a single plan by [@​ndeloof](https://github.com/ndeloof) in [#​14305](https://github.com/docker/compose/pull/14305)
- Feat: scale and watch rebuild use the unified plan by [@​ndeloof](https://github.com/ndeloof) in [#​14291](https://github.com/docker/compose/pull/14291)
- Feat: compose start builds a start-only plan by [@​ndeloof](https://github.com/ndeloof) in [#​14296](https://github.com/docker/compose/pull/14296)
**Commands**
- Feat(run): --no-recreate reuses existing dependencies as-is by [@​ndeloof](https://github.com/ndeloof) in [#​14144](https://github.com/docker/compose/pull/14144)
- Feat(push): add --ignore-missing to skip images not available locally by [@​glours](https://github.com/glours) in [#​14341](https://github.com/docker/compose/pull/14341)
- Feat(push): deprecate --ignore-push-failures in favor of --ignore-missing by [@​glours](https://github.com/glours) in [#​14354](https://github.com/docker/compose/pull/14354)
- Feat(stats): add --all-projects and --aggregate flags by [@​glours](https://github.com/glours) in [#​14337](https://github.com/docker/compose/pull/14337)
- Feat(network): let a service opt out of its name as a network alias by [@​glours](https://github.com/glours) in [#​14342](https://github.com/docker/compose/pull/14342)
- Pass --parallel limit to bake as --jobs by [@​maxproske](https://github.com/maxproske) in [#​14352](https://github.com/docker/compose/pull/14352)
**Other**
- Feat: support the umask service attribute by [@​ndeloof](https://github.com/ndeloof) in [#​14367](https://github.com/docker/compose/pull/14367)
- Use the Docker Desktop Hub session for Docker Hub registry credentials by [@​Benehiko](https://github.com/Benehiko) in [#​14295](https://github.com/docker/compose/pull/14295)
##### 🐛 Fixes
- Fix(bridge): reject --dry-run on bridge commands by [@​glours](https://github.com/glours) in [#​14307](https://github.com/docker/compose/pull/14307)
- Fix(up): don't report a cancelled or expired wait on an optional dependency as skipped by [@​ndeloof](https://github.com/ndeloof) in [#​14309](https://github.com/docker/compose/pull/14309)
- Fix(logs): relay each line of a restarted container exactly once by [@​ndeloof](https://github.com/ndeloof) in [#​14314](https://github.com/docker/compose/pull/14314)
- Fix(bake): grant permissions for configured build inputs by [@​crazy-max](https://github.com/crazy-max) in [#​14325](https://github.com/docker/compose/pull/14325)
- Fix(watch): skip sync+exec triggers on bind-mounted paths by [@​glours](https://github.com/glours) in [#​14328](https://github.com/docker/compose/pull/14328)
- Fix: pre\_start hooks receive the service env\_file and environment by [@​ndeloof](https://github.com/ndeloof) in [#​14293](https://github.com/docker/compose/pull/14293)
- Fix: keep the image pull of compose run inside the run progress block by [@​ndeloof](https://github.com/ndeloof) in [#​14294](https://github.com/docker/compose/pull/14294)
- Fix: do not execute providers and models in dry-run mode by [@​glours](https://github.com/glours) in [#​14334](https://github.com/docker/compose/pull/14334)
- Fix(build): read bake's stderr to the end before waiting for it by [@​ndeloof](https://github.com/ndeloof) in [#​14335](https://github.com/docker/compose/pull/14335)
- Fix(executor): a wait node holds no --parallel slot while it polls by [@​ndeloof](https://github.com/ndeloof) in [#​14303](https://github.com/docker/compose/pull/14303)
- Fix(pre\_start): capture a hook's output by opening its log stream once started by [@​ndeloof](https://github.com/ndeloof) in [#​14353](https://github.com/docker/compose/pull/14353)
- Fix(run): keep a recreated dependency's anonymous volumes by [@​htoyoda18](https://github.com/htoyoda18) in [#​14358](https://github.com/docker/compose/pull/14358)
- Fix(watch): ignore .git at any depth inside the watched path by [@​htoyoda18](https://github.com/htoyoda18) in [#​14363](https://github.com/docker/compose/pull/14363)
- Fix(executor): report the services a failed start interrupts by [@​ndeloof](https://github.com/ndeloof) in [#​14376](https://github.com/docker/compose/pull/14376)
- Fix(monitor): subscribe to events since before the initial listing by [@​ndeloof](https://github.com/ndeloof) in [#​14304](https://github.com/docker/compose/pull/14304)
- Fix(compose): skip the lowered-environment allocation in envResolverWithCase by [@​TDnorthgarden](https://github.com/TDnorthgarden) in [#​14390](https://github.com/docker/compose/pull/14390)
- Fix(projectloader): unescape service names in unsupported attribute warnings by [@​Huang-404-Q](https://github.com/Huang-404-Q) in [#​14380](https://github.com/docker/compose/pull/14380)
- Fix(down): keep a volume the project does not own on down -v by [@​htoyoda18](https://github.com/htoyoda18) in [#​14374](https://github.com/docker/compose/pull/14374)
- Fix(start): give a started use\_api\_socket service its config file by [@​ndeloof](https://github.com/ndeloof) in [#​14393](https://github.com/docker/compose/pull/14393)
- Fix(up): honor -t when an attached up stops the application by [@​htoyoda18](https://github.com/htoyoda18) in [#​14395](https://github.com/docker/compose/pull/14395)
- Fix(up): check a depends\_on condition before the first poll tick by [@​htoyoda18](https://github.com/htoyoda18) in [#​14385](https://github.com/docker/compose/pull/14385)
- Fix(watch): recognize bind-mounted paths starting with two dots by [@​ahbaqdadi](https://github.com/ahbaqdadi) in [#​14425](https://github.com/docker/compose/pull/14425)
- Fix(use\_api\_socket): harden the credentials handed to the service by [@​ndeloof](https://github.com/ndeloof) in [#​14402](https://github.com/docker/compose/pull/14402)
##### 🔧 Internal
- Executor: run start-phase operations (epic [#​14081](https://github.com/docker/compose/issues/14081), lot 1) by [@​ndeloof](https://github.com/ndeloof) in [#​14274](https://github.com/docker/compose/pull/14274)
- Api: DownOptions.Images becomes a typed ImagePruneMode, validated upfront by [@​ndeloof](https://github.com/ndeloof) in [#​14149](https://github.com/docker/compose/pull/14149)
- Api: reject incompatible Up options with a typed error by [@​ndeloof](https://github.com/ndeloof) in [#​14306](https://github.com/docker/compose/pull/14306)
- Refactor: split create() into preparePlan + execute by [@​ndeloof](https://github.com/ndeloof) in [#​14289](https://github.com/docker/compose/pull/14289)
- Refactor(executor): let a caller drive the create and start phases itself by [@​ndeloof](https://github.com/ndeloof) in [#​14302](https://github.com/docker/compose/pull/14302)
- Refactor(api): split Compose into focused interfaces by [@​ndeloof](https://github.com/ndeloof) in [#​14322](https://github.com/docker/compose/pull/14322)
- Refactor(compose): move mutable package-level state into composeService by [@​ndeloof](https://github.com/ndeloof) in [#​14323](https://github.com/docker/compose/pull/14323)
- Refactor(up): inject the navigation menu instead of importing cmd/formatter by [@​ndeloof](https://github.com/ndeloof) in [#​14324](https://github.com/docker/compose/pull/14324)
- Refactor: extract inspect and projectloader from pkg/compose into internal packages by [@​ndeloof](https://github.com/ndeloof) in [#​14331](https://github.com/docker/compose/pull/14331)
- Refactor: move the provider relay and plugin execution to internal/relay and internal/provider by [@​ndeloof](https://github.com/ndeloof) in [#​14333](https://github.com/docker/compose/pull/14333)
- Refactor(executor): hand the hook-log listener to runStart only by [@​ndeloof](https://github.com/ndeloof) in [#​14392](https://github.com/docker/compose/pull/14392)
- Refactor: move exec, cp, export and commit to internal/containerops by [@​ndeloof](https://github.com/ndeloof) in [#​14397](https://github.com/docker/compose/pull/14397)
- Refactor: move the config-hash helpers to internal/confighash by [@​ndeloof](https://github.com/ndeloof) in [#​14405](https://github.com/docker/compose/pull/14405)
- Refactor: add internal/concurrency for the bounded errgroup helpers by [@​ndeloof](https://github.com/ndeloof) in [#​14422](https://github.com/docker/compose/pull/14422)
- Refactor: remove the helpers duplicated across pkg/compose and the internal packages by [@​ndeloof](https://github.com/ndeloof) in [#​14424](https://github.com/docker/compose/pull/14424)
- Docs(compose): drop the comments that still describe the deleted imperative start path by [@​ndeloof](https://github.com/ndeloof) in [#​14398](https://github.com/docker/compose/pull/14398)
- Docs(compose): correct what the startMx comment says about [#​12846](https://github.com/docker/compose/issues/12846) by [@​ndeloof](https://github.com/ndeloof) in [#​14399](https://github.com/docker/compose/pull/14399)
- Refactor(compose): drop the timeout parameter of waitDependencies by [@​ndeloof](https://github.com/ndeloof) in [#​14400](https://github.com/docker/compose/pull/14400)
- Refactor(compose): move the dependency wait helpers to their own file by [@​ndeloof](https://github.com/ndeloof) in [#​14401](https://github.com/docker/compose/pull/14401)
- Ci: run unit tests with -race, pin test tooling, add a ci-ok aggregate check by [@​ndeloof](https://github.com/ndeloof) in [#​14321](https://github.com/docker/compose/pull/14321)
- Go.mod: keep go patch version at lowest possible by [@​thaJeztah](https://github.com/thaJeztah) in [#​14347](https://github.com/docker/compose/pull/14347)
- Build(lint): bump golangci-lint to v2.15.0 and fix its new findings by [@​ndeloof](https://github.com/ndeloof) in [#​14418](https://github.com/docker/compose/pull/14418)
- Test(e2e): lock the behavior of the foreground up by [@​ndeloof](https://github.com/ndeloof) in [#​14300](https://github.com/docker/compose/pull/14300)
- Test(formatter): keep escape sequences out of the go test output by [@​htoyoda18](https://github.com/htoyoda18) in [#​14351](https://github.com/docker/compose/pull/14351)
- Docs: remove broken CONTRIBUTING.md link by [@​DaneHarrison](https://github.com/DaneHarrison) in [#​14251](https://github.com/docker/compose/pull/14251)
##### ⚙️ Dependencies
- Build(deps): golang.org/x/net v0.60.0 (security) by [@​thaJeztah](https://github.com/thaJeztah) in [#​14316](https://github.com/docker/compose/pull/14316)
- Chore(deps): bump github.com/containerd/containerd/v2 v2.4.2 (security) by [@​thaJeztah](https://github.com/thaJeztah) in [#​14339](https://github.com/docker/compose/pull/14339)
- Update to go1.26.9 (security) by [@​thaJeztah](https://github.com/thaJeztah) in [#​14315](https://github.com/docker/compose/pull/14315)
- Update to go1.26.10 (security) by [@​thaJeztah](https://github.com/thaJeztah) in [#​14366](https://github.com/docker/compose/pull/14366)
- Build(deps): bump github.com/mattn/go-shellwords from 1.0.15 to 1.0.16 by [@​dependabot](https://github.com/dependabot)\[bot] in [#​14320](https://github.com/docker/compose/pull/14320)
- Build(deps): bump github.com/docker/cli from 29.8.2+incompatible to 29.9.0+incompatible by [@​dependabot](https://github.com/dependabot)\[bot] in [#​14319](https://github.com/docker/compose/pull/14319)
- Build(deps): bump github.com/moby/moby/client from 0.6.1 to 0.6.2 by [@​dependabot](https://github.com/dependabot)\[bot] in [#​14318](https://github.com/docker/compose/pull/14318)
- Build(deps): bump github.com/docker/secrets-engine/x from 0.8.2 to 0.8.3 by [@​dependabot](https://github.com/dependabot)\[bot] in [#​14301](https://github.com/docker/compose/pull/14301)
- Build(deps): bump secrets-engine client to v0.2.0 by [@​Benehiko](https://github.com/Benehiko) in [#​14327](https://github.com/docker/compose/pull/14327)
- Build(deps): bump secrets-engine/client to v0.2.2 by [@​Benehiko](https://github.com/Benehiko) in [#​14361](https://github.com/docker/compose/pull/14361)
- Build(deps): bump github.com/Microsoft/go-winio from 0.6.3-0.20251027160822-ad3df93bed29 to 0.6.3 by [@​dependabot](https://github.com/dependabot)\[bot] in [#​14330](https://github.com/docker/compose/pull/14330)
- Build(deps): bump golang.org/x/sync from 0.23.0 to 0.24.0 by [@​dependabot](https://github.com/dependabot)\[bot] in [#​14329](https://github.com/docker/compose/pull/14329)
- Build(deps): bump github.com/mattn/go-runewidth from 0.0.30 to 0.0.31 by [@​dependabot](https://github.com/dependabot)\[bot] in [#​14348](https://github.com/docker/compose/pull/14348)
- Build(deps): bump github.com/docker/cli from 29.9.0+incompatible to 29.9.1+incompatible by [@​dependabot](https://github.com/dependabot)\[bot] in [#​14349](https://github.com/docker/compose/pull/14349)
- Build(deps): bump actions/upload-artifact from 7.0.1 to 7.0.2 by [@​dependabot](https://github.com/dependabot)\[bot] in [#​14343](https://github.com/docker/compose/pull/14343)
- Build(deps): bump actions/download-artifact from 8.0.1 to 8.0.2 by [@​dependabot](https://github.com/dependabot)\[bot] in [#​14344](https://github.com/docker/compose/pull/14344)
- Build(deps): bump github/codeql-action/upload-sarif from 4.38.2 to 4.38.3 by [@​dependabot](https://github.com/dependabot)\[bot] in [#​14350](https://github.com/docker/compose/pull/14350)
- Build(deps): bump golang.org/x/sys from 0.48.0 to 0.49.0 by [@​dependabot](https://github.com/dependabot)\[bot] in [#​14338](https://github.com/docker/compose/pull/14338)
- Build(deps): bump ossf/scorecard-action from 2.4.4 to 2.5.0 by [@​dependabot](https://github.com/dependabot)\[bot] in [#​14360](https://github.com/docker/compose/pull/14360)
- Build(deps): bump docker/bake-action from 7.4.0 to 7.5.0 in the docker-actions group by [@​dependabot](https://github.com/dependabot)\[bot] in [#​14371](https://github.com/docker/compose/pull/14371)
- Build(deps): bump github.com/docker/cli from 29.9.1+incompatible to 29.9.2+incompatible by [@​dependabot](https://github.com/dependabot)\[bot] in [#​14369](https://github.com/docker/compose/pull/14369)
- Build(deps): bump github.com/Microsoft/go-winio from 0.6.3 to 0.6.4 by [@​dependabot](https://github.com/dependabot)\[bot] in [#​14368](https://github.com/docker/compose/pull/14368)
- Build(deps): bump the docker-actions group with 2 updates by [@​dependabot](https://github.com/dependabot)\[bot] in [#​14389](https://github.com/docker/compose/pull/14389)
- Build(deps): bump github/codeql-action/upload-sarif from 4.38.3 to 4.39.0 by [@​dependabot](https://github.com/dependabot)\[bot] in [#​14377](https://github.com/docker/compose/pull/14377)
- Build(deps): bump docker/github-builder/.github/workflows/bake.yml from 1.18.0 to 1.18.1 in the docker-actions group by [@​dependabot](https://github.com/dependabot)\[bot] in [#​14415](https://github.com/docker/compose/pull/14415)
- Build(deps): bump github/codeql-action/upload-sarif from 4.39.0 to 4.39.1 by [@​dependabot](https://github.com/dependabot)\[bot] in [#​14416](https://github.com/docker/compose/pull/14416)
##### New Contributors
- [@​Benehiko](https://github.com/Benehiko) made their first contribution in [#​14295](https://github.com/docker/compose/pull/14295)
- [@​DaneHarrison](https://github.com/DaneHarrison) made their first contribution in [#​14251](https://github.com/docker/compose/pull/14251)
- [@​TDnorthgarden](https://github.com/TDnorthgarden) made their first contribution in [#​14390](https://github.com/docker/compose/pull/14390)
- [@​Huang-404-Q](https://github.com/Huang-404-Q) made their first contribution in [#​14380](https://github.com/docker/compose/pull/14380)
- [@​ahbaqdadi](https://github.com/ahbaqdadi) made their first contribution in [#​14425](https://github.com/docker/compose/pull/14425)
**Full Changelog**: <https://github.com/docker/compose/compare/v5.6.1...v5.7.0>
</details>
---
### Configuration
📅 **Schedule**: (UTC)
- Branch creation
- At any time (no schedule defined)
- Automerge
- At any time (no schedule defined)
🚦 **Automerge**: Enabled.
♻ **Rebasing**: Whenever PR is behind base branch, or you tick the rebase/retry checkbox.
🔕 **Ignore**: Close this PR and you won't be reminded about these updates again.
---
- [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check this box
---
This PR has been generated by [Mend Renovate CLI](https://github.com/renovatebot/renovate).
<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0NC4xMTYuMSIsInVwZGF0ZWRJblZlciI6IjQ0LjExNi4xIiwidGFyZ2V0QnJhbmNoIjoibWFzdGVyIiwibGFiZWxzIjpbInJlbm92YXRlL2F1dG9tZXJnZSJdfQ==-->
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
This PR contains the following updates:
5.6.1→5.7.0v5.6.1→v5.7.0Release Notes
docker/compose (docker/compose)
v5.7.0Compare Source
What's Changed
✨ Improvements
Execution plan
Commands
Other
🐛 Fixes
🔧 Internal
⚙️ Dependencies
New Contributors
Full Changelog: https://github.com/docker/compose/compare/v5.6.1...v5.7.0
Configuration
📅 Schedule: (UTC)
🚦 Automerge: Enabled.
♻ Rebasing: Whenever PR is behind base branch, or you tick the rebase/retry checkbox.
🔕 Ignore: Close this PR and you won't be reminded about these updates again.
This PR has been generated by Mend Renovate CLI.