-
Notifications
You must be signed in to change notification settings - Fork 5.6k
publish Compose application as compose.yaml + images #13257
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Conversation
828a5f7 to
208ec3a
Compare
Signed-off-by: Nicolas De Loof <[email protected]>
glours
left a comment
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
LGTM + tests ok 👌
This MR contains the following updates: | Package | Update | Change | |---|---|---| | [docker/compose](https://github.com/docker/compose) | minor | `v2.39.4` -> `v2.40.0` | MR created with the help of [el-capitano/tools/renovate-bot](https://gitlab.com/el-capitano/tools/renovate-bot). **Proposed changes to behavior should be submitted there as MRs.** --- ### Release Notes <details> <summary>docker/compose (docker/compose)</summary> ### [`v2.40.0`](https://github.com/docker/compose/releases/tag/v2.40.0) [Compare Source](docker/compose@v2.39.4...v2.40.0) #### What's Changed ##### ✨ Improvements - publish Compose application as compose.yaml + images by [@​ndeloof](https://github.com/ndeloof) in [#​13257](docker/compose#13257) ##### 🐛 Fixes - resolve secrets based on env var before executing bake by [@​ndeloof](https://github.com/ndeloof) in [#​13237](docker/compose#13237) - pass bake secrets by env by [@​ndeloof](https://github.com/ndeloof) in [#​13249](docker/compose#13249) - escape $ in bake.json as interpolation already has been managed by cpmpose by [@​ndeloof](https://github.com/ndeloof) in [#​13259](docker/compose#13259) ##### 🔧 Internal - pkg/compose: remove uses of deprecated mitchellh/mapstructure module by [@​thaJeztah](https://github.com/thaJeztah) in [#​13239](docker/compose#13239) - pkg/watch: remove unused IsWindowsShortReadError by [@​thaJeztah](https://github.com/thaJeztah) in [#​13052](docker/compose#13052) - pkg/compose: build: remove permissions warning on Windows by [@​thaJeztah](https://github.com/thaJeztah) in [#​13236](docker/compose#13236) - pluginMain: remove uses of DockerCLI.Apply by [@​thaJeztah](https://github.com/thaJeztah) in [#​13240](docker/compose#13240) - use containerd registry client by [@​ndeloof](https://github.com/ndeloof) in [#​13245](docker/compose#13245) - provider services: use '--project-name=' notation by [@​glours](https://github.com/glours) in [#​13250](docker/compose#13250) - gha: update test-matrix: remove docker 26.x by [@​thaJeztah](https://github.com/thaJeztah) in [#​13254](docker/compose#13254) - pkg/compose: explicitly map AuthConfig fields instead of a direct cast by [@​thaJeztah](https://github.com/thaJeztah) in [#​13253](docker/compose#13253) - cmd/compose: fix minor linting issues by [@​thaJeztah](https://github.com/thaJeztah) in [#​13252](docker/compose#13252) - use containerd client for OCI operations by [@​ndeloof](https://github.com/ndeloof) in [#​13251](docker/compose#13251) ##### ⚙️ Dependencies - build(deps): bump github.com/docker/docker, docker/cli v28.5.0-rc.1 by [@​thaJeztah](https://github.com/thaJeztah) in [#​13241](docker/compose#13241) - build(deps): bump github.com/docker/docker from 28.5.0-rc.1+incompatible to 28.5.0+incompatible by [@​dependabot](https://github.com/dependabot)\[bot] in [#​13260](docker/compose#13260) - build(deps): bump github.com/docker/cli from 28.5.0-rc.1+incompatible to 28.5.0+incompatible by [@​dependabot](https://github.com/dependabot)\[bot] in [#​13261](docker/compose#13261) **Full Changelog**: <docker/compose@v2.39.4...v2.40.0> </details> --- ### Configuration 📅 **Schedule**: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. ♻ **Rebasing**: Whenever MR becomes conflicted, or you tick the rebase/retry checkbox. 🔕 **Ignore**: Close this MR and you won't be reminded about this update again. --- - [ ] <!-- rebase-check -->If you want to rebase/retry this MR, check this box --- This MR has been generated by [Renovate Bot](https://github.com/renovatebot/renovate). <!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0MS4xMzIuNSIsInVwZGF0ZWRJblZlciI6IjQxLjEzMi41IiwidGFyZ2V0QnJhbmNoIjoibWFpbiIsImxhYmVscyI6WyJSZW5vdmF0ZSBCb3QiXX0=-->
|
@ndeloof I have some comments on the design of the OCI artifact:
In general, the lifecycle of a manifest providing a |
|
My initial implementation was relying on publishing an image index, the OCI artifact being one of the entries and service images the many others. This is the approach we adopted for https://github.com/docker-archive-public/docker.app by the time
Use of
the artifact being published is an index list, will all services images. This group only exists because it is used by a Compose application. So the lifecycle of this manifest depends on the referred manifest: if compose application is updated, index list will probably be as well (until images aren't updated) |
|
I'm not convinced that this OCI artifact structure is the best one I can think of. I've created therefore #13354 to sketch my ideas. |
What I did
Introduce option to publish a Compose application as compose.yaml artifact + references to images
In addition to the compose.yaml file(s) stored in OCI artifact, command creates an OCI index for all images used by the compose application. This index is linked to compose artifact using an OCI
Subjectflowchart TD TAG --> A A[Compose OCI Artifact] -->|layer| B(compose.yaml) A -->|layer| C(image-digests.yaml) I[Index] -->|Subject| A I -->|Manifest| R1[image] I -->|Manifest| R2[image]Related issue
see #13238
see https://github.com/docker-archive-public/docker.app
(not mandatory) A picture of a cute animal, if possible in relation to what you did
