-
Notifications
You must be signed in to change notification settings - Fork 5.5k
document extensibility using service.provider #12777
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
ec89d99
to
f15d0af
Compare
docs/extension.md
Outdated
|
||
# Architecture | ||
|
||
Compose extensibility relies on the `provider` attribute to select the actual binary responsible to manage |
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.
Compose extensibility relies on the `provider` attribute to select the actual binary responsible to manage | |
Compose extensibility relies on the `provider` attribute to select the actual binary responsible for managing |
docs/extension.md
Outdated
```json | ||
{"type": "setenv", "message": "URL=https://awesomecloud.com/db:1234"} | ||
``` | ||
`app` service which depends on service managed by provider will get `DATABASE_URL` environment variable injected. |
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.
`app` service which depends on service managed by provider will get `DATABASE_URL` environment variable injected. | |
Then the `app` service, which depends on the service managed by the provider, will receive a `DATABASE_URL` environment variable injected into its runtime environment. |
|
||
func (s *composeService) checkPluginEnabledInDD(ctx context.Context, plugin *manager.Plugin) error { | ||
if integrationEnabled := s.isDesktopIntegrationActive(); !integrationEnabled { | ||
return fmt.Errorf("you should enable Docker Desktop integration to use %q provider services", plugin.Name) | ||
} | ||
|
||
// Until we support more use cases, check explicitly status of model runner | ||
if plugin.Name == "model" { | ||
cmd := exec.CommandContext(ctx, "docker", "model", "status") | ||
_, err := cmd.CombinedOutput() | ||
if err != nil { | ||
var exitErr *exec.ExitError | ||
if errors.As(err, &exitErr) && exitErr.ExitCode() == 1 { | ||
return fmt.Errorf("you should enable model runner to use %q provider services: %s", plugin.Name, err.Error()) | ||
} | ||
} | ||
} else { | ||
return fmt.Errorf("unsupported provider %q", plugin.Name) | ||
} | ||
return nil | ||
} |
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.
Maybe we could keep it for Model Runner and just remove the unsupported provider
error, wdyt?
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.
If plugin is installed, but disabled in DD, won't it report an adequate error message ?
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.
$ docker compose up
[+] Running 1/1
✘ node error 0.0s
Failed to pull model: service unavailable
(model-cli could be improved to send a more user-friendly error)
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.
Almost good to go for me 👍
Signed-off-by: Nicolas De Loof <nicolas.deloof@gmail.com>
Signed-off-by: Nicolas De Loof <nicolas.deloof@gmail.com>
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
This MR contains the following updates: | Package | Update | Change | |---|---|---| | [docker/compose](https://github.com/docker/compose) | minor | `v2.34.0` -> `v2.36.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.36.0`](https://github.com/docker/compose/releases/tag/v2.36.0) [Compare Source](docker/compose@v2.35.1...v2.36.0) #### What's Changed 🎉 You can now use external binaries as service provider to extend Compose behaviour. For more information about creating your own plugin check [the documentation](https://github.com/docker/compose/blob/main/docs/extension.md) ##### ✨ Improvements - Introduce `networks.interface_name` by [@​ndeloof](https://github.com/ndeloof) in docker/compose#12771 - Add support for `COMPOSE_PROGRESS` env variable by [@​AnvarU](https://github.com/AnvarU) in docker/compose#12769 - Document extensibility using service.provider and open provider to external binaries by [@​ndeloof](https://github.com/ndeloof) in docker/compose#12777 - Introduce build `--check` by [@​ndeloof](https://github.com/ndeloof) in docker/compose#12765 ##### 🐛 Fixes - Build: write `--print` output to stdout by [@​emersion](https://github.com/emersion) in docker/compose#12756 - Fix: concurrent map writes when pulling by [@​skanehira](https://github.com/skanehira) in docker/compose#12752 - Fix support for remote absolute path by [@​ndeloof](https://github.com/ndeloof) in docker/compose#12786 - Fix collect image digests for service images built by bake by [@​ndeloof](https://github.com/ndeloof) in docker/compose#12784 - Enable services implicitly declared by a service:xx build dependency by [@​ndeloof](https://github.com/ndeloof) in docker/compose#12785 - Fix config `--variables` not honoring the `--format` flag by [@​alessio-perugini](https://github.com/alessio-perugini) in docker/compose#12809 ##### 🔧 Internal - Remove support of Synchronize File Shares integration with Docker Desktop by [@​glours](https://github.com/glours) in docker/compose#12763 - Display proper event message for provider services on up and down by [@​glours](https://github.com/glours) in docker/compose#12788 - E2e test for start_interval by [@​ndeloof](https://github.com/ndeloof) in docker/compose#12795 - Document behavior on missing extension by [@​ndeloof](https://github.com/ndeloof) in docker/compose#12802 ##### ⚙️ Dependencies - Build(deps): bump github.com/docker/cli from `28.1.0+incompatible` to `28.1.1+incompatible` by [@​dependabot](https://github.com/dependabot) in docker/compose#12761 - Build(deps): bump github.com/docker/docker from `28.1.0+incompatible` to `28.1.1+incompatible` by [@​dependabot](https://github.com/dependabot) in docker/compose#12759 - Build(deps): bump google.golang.org/grpc from `1.71.1` to `1.72.0` by [@​dependabot](https://github.com/dependabot) in docker/compose#12760 - Build(deps): bump github.com/containerd/containerd/v2 from `2.0.4` to `2.0.5` by [@​dependabot](https://github.com/dependabot) in docker/compose#12758 - Bump compose-go to `v2.6.1` by [@​glours](https://github.com/glours) in docker/compose#12766 - Bump compose-go to `v2.6.2` by [@​glours](https://github.com/glours) in docker/compose#12810 - Build(deps): bump github.com/moby/buildkit from `0.21.0` to `0.21.1` by [@​dependabot](https://github.com/dependabot) in docker/compose#12796 - Build(deps): bump golang.org/x/sync from `0.13.0` to `0.14.0` by [@​dependabot](https://github.com/dependabot) in docker/compose#12805 - Build(deps): bump golang.org/x/sys from `0.32.0` to `0.33.0` by [@​dependabot](https://github.com/dependabot) in docker/compose#12804 - Build(deps): bump go.uber.org/mock from `0.5.1` to `0.5.2` by [@​dependabot](https://github.com/dependabot) in docker/compose#12792 #### New Contributors - [@​skanehira](https://github.com/skanehira) made their first contribution in docker/compose#12752 - [@​AnvarU](https://github.com/AnvarU) made their first contribution in docker/compose#12769 - [@​alessio-perugini](https://github.com/alessio-perugini) made their first contribution in docker/compose#12809 **Full Changelog**: docker/compose@v2.35.1...v2.36.0 ### [`v2.35.1`](https://github.com/docker/compose/releases/tag/v2.35.1) [Compare Source](docker/compose@v2.35.0...v2.35.1) #### What's Changed ##### 🐛 Fixes - Use bind API for bind mounts by [@​ndeloof](https://github.com/ndeloof) in docker/compose#12733 - Prefer bind API by [@​ndeloof](https://github.com/ndeloof) in docker/compose#12734 ##### 🔧 Internal - CI(bin-image): free disk space by [@​crazy-max](https://github.com/crazy-max) in docker/compose#12732 - Fix zizmor security alerts on GHA workflows by [@​glours](https://github.com/glours) in docker/compose#12737 - Chore: make function comment match function name by [@​dufucun](https://github.com/dufucun) in docker/compose#12748 - Migrate to use github.com/moby/go-archive by [@​thaJeztah](https://github.com/thaJeztah) in docker/compose#12716 ##### ⚙️ Dependencies - Build(deps): bump github.com/moby/buildkit from `0.20.1` to `0.20.2` by [@​dependabot](https://github.com/dependabot) in docker/compose#12667 - Build(deps): bump google.golang.org/grpc from `1.71.0` to `1.71.1` by [@​dependabot](https://github.com/dependabot) in docker/compose#12691 - Build(deps): bump go.uber.org/mock from `0.5.0` to `0.5.1` by [@​dependabot](https://github.com/dependabot) in docker/compose#12720 - Build(deps): bump golang.org/x/crypto from `0.32.0` to `0.35.0` by [@​dependabot](https://github.com/dependabot) in docker/compose#12745 - Bump buildkit `v0.21.0`, buildx `v0.23.0` by [@​thaJeztah](https://github.com/thaJeztah) in docker/compose#12754 - Downgrade go-difflib and go-spew to tagged releases by [@​thaJeztah](https://github.com/thaJeztah) in docker/compose#12755 - Bump github.com/docker/docker, github.com/docker/cli `v28.1.0` by [@​thaJeztah](https://github.com/thaJeztah) in docker/compose#12738 #### New Contributors - [@​dufucun](https://github.com/dufucun) made their first contribution in docker/compose#12748 **Full Changelog**: docker/compose@v2.35.0...v2.35.1 ### [`v2.35.0`](https://github.com/docker/compose/releases/tag/v2.35.0) [Compare Source](docker/compose@v2.34.0...v2.35.0) #### What's Changed 🎉 1st implementation of external services feature to support Docker Model Runner in Compose by [@​ndeloof](https://github.com/ndeloof) in docker/compose#12692 ##### ✨ Improvements - Set `$PWD` (may not be supported on Windows) by [@​ndeloof](https://github.com/ndeloof) in docker/compose#12643 - Introduce config `--no-env-resolution` by [@​ndeloof](https://github.com/ndeloof) in docker/compose#12665 - Introduce `build --print` to dump equivalent bakefile by [@​ndeloof](https://github.com/ndeloof) in docker/compose#12675 - Feat(run): Add `--quiet` and `--quiet-build` options for the `run` command by [@​idsulik](https://github.com/idsulik) in docker/compose#12685 - Introduce `volume.type=image` by [@​ndeloof](https://github.com/ndeloof) in docker/compose#12725 ##### 🐛 Fixes - Fix support for secret set by env inside included file by [@​ndeloof](https://github.com/ndeloof) in docker/compose#12635 - Fix edge-case bug checking path prefix in watch for bind mount volumes by [@​matiboux](https://github.com/matiboux) in docker/compose#12640 - Run only loads required service env_file and ignores others by [@​ndeloof](https://github.com/ndeloof) in docker/compose#12645 - Fixed support for `depends_on.restart` in `up` and `restart` commands by [@​ndeloof](https://github.com/ndeloof) in docker/compose#12649 - Bake parses "${}" in DockerfileInline as a variable by [@​ndeloof](https://github.com/ndeloof) in docker/compose#12664 - Fix(secrets): Reverted secrets file mode 440 -> 444 by [@​idsulik](https://github.com/idsulik) in docker/compose#12666 - Fix scale completion by [@​ndeloof](https://github.com/ndeloof) in docker/compose#12672 - Fix: replace `docker-compose.yml` with `compose.yaml` by [@​k-kbk](https://github.com/k-kbk) in docker/compose#12680 - Include implicit build dependencies in build command by [@​ndeloof](https://github.com/ndeloof) in docker/compose#12683 - Capture git fetch output when debug output is enabled by [@​ndeloof](https://github.com/ndeloof) in docker/compose#12719 - Mount API is not strictly equivalent to bind by [@​ndeloof](https://github.com/ndeloof) in docker/compose#12722 ##### 🔧 Internal - Test commandName subcommand order by [@​maxproske](https://github.com/maxproske) in docker/compose#12535 - Set watch option --prune=true as default by [@​remcokranenburg](https://github.com/remcokranenburg) in docker/compose#12650 - Plugin Docker Desktop Model Runner check by [@​glours](https://github.com/glours) in docker/compose#12718 - pkg/compose: implement Export using atomicwriter by [@​thaJeztah](https://github.com/thaJeztah) in docker/compose#12715 - Style: refactor Desktop client for readability and maintainability by [@​Saracomethstein](https://github.com/Saracomethstein) in docker/compose#12723 ##### ⚙️ Dependencies - Build(deps): bump github.com/docker/buildx from `0.21.2` to `0.21.3` by [@​dependabot](https://github.com/dependabot) in docker/compose#12646 - Build(deps): bump github.com/containerd/containerd/v2 from `2.0.3` to `2.0.4` by [@​dependabot](https://github.com/dependabot) in docker/compose#12647 - Bump docker & cli `v28.0.4` and buildx `v0.22.0` by [@​ndeloof](https://github.com/ndeloof) in docker/compose#12674 - Bump golangci-lint to version `v2.0.2` by [@​glours](https://github.com/glours) in docker/compose#12689 - Bump golang to `1.23.8` by [@​glours](https://github.com/glours) in docker/compose#12698 - Update secret detector to fix vulnerability https://github.com/golang… by [@​sigi-glovebox](https://github.com/sigi-glovebox) in docker/compose#12707 - Build(deps): bump golang.org/x/sys from `0.31.0` to `0.32.0` by [@​dependabot](https://github.com/dependabot) in docker/compose#12713 - Build(deps): bump golang.org/x/sync from `0.12.0` to `0.13.0` by [@​dependabot](https://github.com/dependabot) in docker/compose#12712 - Build(deps): bump github.com/compose-spec/compose-go/v2 from `2.5.1-0.20250409070949-8e1a035095ca` to `2.6.0` by [@​dependabot](https://github.com/dependabot) in docker/compose#12729 #### New Contributors - [@​matiboux](https://github.com/matiboux) made their first contribution in docker/compose#12640 - [@​k-kbk](https://github.com/k-kbk) made their first contribution in docker/compose#12680 - [@​sigi-glovebox](https://github.com/sigi-glovebox) made their first contribution in docker/compose#12707 - [@​Saracomethstein](https://github.com/Saracomethstein) made their first contribution in docker/compose#12723 **Full Changelog**: docker/compose@v2.34.0...v2.35.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:eyJjcmVhdGVkSW5WZXIiOiIzOS4yNTkuMCIsInVwZGF0ZWRJblZlciI6IjM5LjI2NC4wIiwidGFyZ2V0QnJhbmNoIjoibWFpbiIsImxhYmVscyI6WyJSZW5vdmF0ZSBCb3QiXX0=-->
What I did
Document extensibility mechanism using
service.provider
to configure third-party command responsible to manage service lifecycleMinor change to the "API": pass service name, so that same provider can be used to configure multiple resources and tag them with service name for later removal, as
compose down
may be ran with only a subset of the model(not mandatory) A picture of a cute animal, if possible in relation to what you did