Skip to content

Conversation

ndeloof
Copy link
Contributor

@ndeloof ndeloof commented Sep 25, 2025

What I did
replace use of buildx's imagetool with direct use of containerd's registry client
this is related to #13056, removing compose use of buildx codebase

Related issue

(not mandatory) A picture of a cute animal, if possible in relation to what you did

@ndeloof ndeloof requested a review from a team as a code owner September 25, 2025 13:01
@ndeloof ndeloof requested a review from glours September 25, 2025 13:01
@thaJeztah
Copy link
Member

Looks like you missed a test-file;

116.9 pkg/compose/apiSocket.go:1: : # github.com/docker/compose/v2/pkg/compose [github.com/docker/compose/v2/pkg/compose.test]
116.9 pkg/compose/publish_test.go:61:32: undefined: ocipush.Pushable (typecheck)

Comment on lines 73 to 76
if host == "registry-1.docker.io" {
host = "https://index.docker.io/v1/"
}
auth, err := config.GetAuthConfig(host)
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Maybe this should use the internal utility to keep it central? Or is the logic different here?

// GetAuthConfigKey special-cases using the full index address of the official
// index as the AuthConfig key, and uses the (host)name[:port] for private indexes.
func GetAuthConfigKey(reposName reference.Named) string {
indexName := reference.Domain(reposName)
if indexName == IndexName || indexName == IndexHostname {
return IndexServer
}
return indexName
}

That one doesn't use registry-1.docker.io though; ISTR we had that at some point, but some users depended on registry-1.docker.io not to be normalised to docker.io (and thus "default auth")

(😭 I need to cry every time I run into these)

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

😅

@ndeloof ndeloof force-pushed the registry branch 3 times, most recently from 17817ee to 499aa34 Compare September 26, 2025 13:30
"github.com/compose-spec/compose-go/v2/types"
"github.com/docker/compose/v2/internal/ocipush"
"github.com/docker/compose/v2/pkg/api"
v1 "github.com/opencontainers/image-spec/specs-go/v1"
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

(very unrelated) In our other repositories, we alias this import as either ocispec (or ocispecs); I can open a follow-up PR to update the aliases in this repo, which may help reading the code.

IndexServer = "https://index.docker.io/v1/"
// IndexName is the name of the index
IndexName = "docker.io"
// LegacyRegistry is the legacy name of the inde
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This is actually the canonical, only correct hostname of the registry 🫠
https://github.com/moby/moby/blob/2670796a010406b6b35aaff1cdd02f4309e79060/daemon/pkg/registry/config.go#L40-L46

Copy link
Contributor

@glours glours left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Just 1 small nit, tests ok on my side 👍

Comment on lines 143 to 155
_, err = push.Write(descriptor.Data)
if err != nil {
return err
}
return nil
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
_, err = push.Write(descriptor.Data)
if err != nil {
return err
}
return nil
_, err = push.Write(descriptor.Data)
return err

// IndexName is the name of the index
IndexName = "docker.io"
)
import "github.com/docker/docker/registry"
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

OH! Don't import this one; it is removed in the next release / moved internal. It's the package we want to get rid of.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

😮‍💨

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

so, while those are used everywhere there's no canonical place where such const are declared ?

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I don't even think Docker Hub publicly documents them

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I don't even think Docker Hub publicly documents them

But yeah, that package was my attempt at having a somewhat documented place for these, and at the time there were hopes that we would finally have the registry running at docker.io, but that effort didn't go anywhere, and that package was problematic, and didn't fit in "client" or "api" for Moby.

@ndeloof ndeloof force-pushed the registry branch 2 times, most recently from 8431002 to d8a110b Compare September 26, 2025 16:16
@ndeloof ndeloof enabled auto-merge (rebase) September 26, 2025 16:17
Signed-off-by: Nicolas De Loof <[email protected]>
@ndeloof ndeloof merged commit 8978c10 into docker:main Sep 26, 2025
26 checks passed
@ndeloof ndeloof deleted the registry branch September 26, 2025 17:19
tmeijn pushed a commit to tmeijn/dotfiles that referenced this pull request Oct 10, 2025
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 [@&#8203;ndeloof](https://github.com/ndeloof) in [#&#8203;13257](docker/compose#13257)

##### 🐛 Fixes

- resolve secrets based on env var before executing bake by [@&#8203;ndeloof](https://github.com/ndeloof) in [#&#8203;13237](docker/compose#13237)
- pass bake secrets by env by [@&#8203;ndeloof](https://github.com/ndeloof) in [#&#8203;13249](docker/compose#13249)
- escape $ in bake.json as interpolation already has been managed by cpmpose by [@&#8203;ndeloof](https://github.com/ndeloof) in [#&#8203;13259](docker/compose#13259)

##### 🔧  Internal

- pkg/compose: remove uses of deprecated mitchellh/mapstructure module by [@&#8203;thaJeztah](https://github.com/thaJeztah) in [#&#8203;13239](docker/compose#13239)
- pkg/watch: remove unused IsWindowsShortReadError by [@&#8203;thaJeztah](https://github.com/thaJeztah) in [#&#8203;13052](docker/compose#13052)
- pkg/compose: build: remove permissions warning on Windows by [@&#8203;thaJeztah](https://github.com/thaJeztah) in [#&#8203;13236](docker/compose#13236)
- pluginMain: remove uses of DockerCLI.Apply by [@&#8203;thaJeztah](https://github.com/thaJeztah) in [#&#8203;13240](docker/compose#13240)
- use containerd registry client by [@&#8203;ndeloof](https://github.com/ndeloof) in [#&#8203;13245](docker/compose#13245)
- provider services: use '--project-name=' notation by [@&#8203;glours](https://github.com/glours) in [#&#8203;13250](docker/compose#13250)
- gha: update test-matrix: remove docker 26.x by [@&#8203;thaJeztah](https://github.com/thaJeztah) in [#&#8203;13254](docker/compose#13254)
- pkg/compose: explicitly map AuthConfig fields instead of a direct cast by [@&#8203;thaJeztah](https://github.com/thaJeztah) in [#&#8203;13253](docker/compose#13253)
- cmd/compose: fix minor linting issues by [@&#8203;thaJeztah](https://github.com/thaJeztah) in [#&#8203;13252](docker/compose#13252)
- use containerd client for OCI operations by [@&#8203;ndeloof](https://github.com/ndeloof) in [#&#8203;13251](docker/compose#13251)

##### ⚙️ Dependencies

- build(deps): bump github.com/docker/docker, docker/cli v28.5.0-rc.1 by [@&#8203;thaJeztah](https://github.com/thaJeztah) in [#&#8203;13241](docker/compose#13241)
- build(deps): bump github.com/docker/docker from 28.5.0-rc.1+incompatible to 28.5.0+incompatible by [@&#8203;dependabot](https://github.com/dependabot)\[bot] in [#&#8203;13260](docker/compose#13260)
- build(deps): bump github.com/docker/cli from 28.5.0-rc.1+incompatible to 28.5.0+incompatible by [@&#8203;dependabot](https://github.com/dependabot)\[bot] in [#&#8203;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=-->
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants