Commit Graph
1266 Commits
Author SHA1 Message Date
Sebastiaan van Stijn 4761fd88b0 pkg/compose: build: remove permissions warning on Windows
This warning was added in [moby@4a8b3ca] to print a warning when building
Linux images from a Windows client. Window's filesystem does not have an
"executable" bit, which mean that, for example, copying a shell script
to an image during build would lose the executable bit. So for Windows
clients, the executable bit would be set on all files, unconditionally.

Originally this was detected in the client, which had direct access to
the API response headers, but when refactoring the client to use a common
library in [moby@535c4c9], this was refactored into a `ImageBuildResponse`
wrapper, deconstructing the API response into an `io.Reader` and a string
field containing only the `OSType` header.

This was the only use and only purpose of the `OSType` field, and now that
BuildKit is the default builder for Linux images, this warning didn't get
printed unless BuildKit was explicitly disabled.

This patch removes the warning, so that we can potentially remove the
field, or the `ImageBuildResponse` type altogether.

[moby@4a8b3ca]: https://github.com/moby/moby/commit/4a8b3cad6096854027151dfbcfb4b2cd8841ad95
[moby@535c4c9]: https://github.com/moby/moby/commit/535c4c9a59b1e58c897677d6948a595cb3d28639

Signed-off-by: Sebastiaan van Stijn <[email protected]>
2025-09-24 10:26:05 +02:00
Sebastiaan van Stijn 02c8e63545 pkg/watch: remove unused IsWindowsShortReadError
This function was added in b3615d64e2 but
appears to be unused.

Signed-off-by: Sebastiaan van Stijn <[email protected]>
2025-09-24 09:29:27 +02:00
Sebastiaan van Stijn ab7a6e9322 pkg/compose: remove uses of deprecated mitchellh/mapstructure module
The github.com/mitchellh/mapstructure module was archived and is no longer
maintained. This module has moved to github.com/go-viper/mapstructure,
which updated to v2, with a minor breaking change in v2.0;

> Error is removed in favor of errors.Join (backported from Go 1.20 to
> preserve compatibility with earlier versions)

Signed-off-by: Sebastiaan van Stijn <[email protected]>
2025-09-24 09:21:40 +02:00
Nicolas De Loof 2ca7b96e33 resolve secrets based on env var before executing bake
Signed-off-by: Nicolas De Loof <[email protected]>
2025-09-22 14:56:15 +02:00
Ricardo Branco a32dc3da72 test: Set stop_signal to SIGTERM
The official nginx images set STOPSIGNAL to SIGQUIT which dumps core.
Set it to SIGTERM to avoid dumping core on e2e tests.

Signed-off-by: Ricardo Branco <[email protected]>
2025-09-19 10:31:20 +02:00
Guillaume Lours d07c437ce8 dectect if piped run command and disable tty if so
Signed-off-by: Guillaume Lours <[email protected]>
2025-09-19 09:51:15 +02:00
Nicolas De Loof a429c09dfa fix support for build with bake when target docker endpoint requires TLS
Signed-off-by: Nicolas De Loof <[email protected]>
2025-09-18 11:16:47 +02:00
Guillaume Lours df3c27c864 add deprecation warning for x-initialSync + e2e test
Signed-off-by: Guillaume Lours <[email protected]>
2025-09-18 11:06:44 +02:00
Guillaume Lours 956891af54 add support of develop.watch.initial_sync attribute
Signed-off-by: Guillaume Lours <[email protected]>
2025-09-18 11:06:44 +02:00
Nicolas De Loof a473341058 volume ls command can run without a project
Signed-off-by: Nicolas De Loof <[email protected]>
2025-09-10 09:41:47 +02:00
Nicolas De Loof 2d482e61ce propagate docker endpoint to bake using DOCKER_* env variables
Signed-off-by: Nicolas De Loof <[email protected]>
2025-09-08 17:54:55 +02:00
Nicolas De Loof 09689400e5 fix run --build support for service:* reference in additional_context
Signed-off-by: Nicolas De Loof <[email protected]>
2025-09-08 15:10:29 +02:00
Nicolas De Loof cb3691154b detect container is restarted
Signed-off-by: Nicolas De Loof <[email protected]>
2025-09-08 15:03:18 +02:00
Nicolas De Loof 7cd569922e only propagate os.Env to bake, not the whole project.Environment
Signed-off-by: Nicolas De Loof <[email protected]>
2025-09-08 14:40:49 +02:00
Nicolas De Loof eec2bb7ea6 only force plain mode build if progress is set to auto
Signed-off-by: Nicolas De Loof <[email protected]>
2025-09-08 14:17:04 +02:00
Sebastiaan van Stijn beb81a73f9 pkg/compose: remove aliases for container-state consts
These are no longer used, and have no known external consumers.

Signed-off-by: Sebastiaan van Stijn <[email protected]>
2025-09-08 11:52:28 +02:00
Sebastiaan van Stijn f217207876 pkg/compose: use state consts from moby API
Signed-off-by: Sebastiaan van Stijn <[email protected]>
2025-09-08 11:52:28 +02:00
Nicolas De Loof 02ffe2ac6c prefer application container vs one-off running exec without index
Signed-off-by: Nicolas De Loof <[email protected]>
2025-09-07 14:41:34 +02:00
Nicolas De Loof 4dd369bdcb fix sigint/sigterm support in logs --follow
Signed-off-by: Nicolas De Loof <[email protected]>
2025-09-07 14:19:56 +02:00
Sebastiaan van Stijn b33ecf65e8 go.mod: bump buildx v0.28.0-rc2, buildkit v0.24.0-rc2
Signed-off-by: Sebastiaan van Stijn <[email protected]>
2025-09-02 07:28:06 +02:00
Roberto Villarreal 04b8ac5fe4 Unquote volume names in creation events
Volumes are the only resources that are quoted, and only on creation.

Signed-off-by: Roberto Villarreal <[email protected]>
2025-08-29 11:50:42 +02:00
Sebastiaan van Stijn f1efbb8322 use enum-consts for State and Health
Signed-off-by: Sebastiaan van Stijn <[email protected]>
2025-08-29 08:18:16 +02:00
Sebastiaan van Stijn 1d52012b82 go.mod: bump buildkit v0.24.0-rc1, buildx v0.28.0-rc1
Signed-off-by: Sebastiaan van Stijn <[email protected]>
2025-08-29 08:16:23 +02:00
Sebastiaan van Stijn 1d69f4a68c pkg/compose: composeService.Up: rewrite without go-multierror
- Use a errgroup.Group and add a appendErr utility to not fail-fast,
  but collect errors.
- replace doneCh for a global context to cancel goroutines
- Commented out attachCtx code, as it didn't appear to be functional
  (as it wouldn't be cancelled).

Signed-off-by: Sebastiaan van Stijn <[email protected]>
2025-08-27 15:25:17 +02:00
Kian Eliasi 6078b4d99d Fix: use image created time when last tag time is not present
Signed-off-by: Kian Eliasi <[email protected]>
2025-08-27 09:03:58 +02:00
Sebastiaan van Stijn 51499f645b pkg/compose: pull: use native multi-errors
Signed-off-by: Sebastiaan van Stijn <[email protected]>
2025-08-25 11:22:25 +02:00
Guillaume Lours c420bc44c4 check the assume yes publish flag command before the presence of bind mounts
Signed-off-by: Guillaume Lours <[email protected]>
2025-08-25 10:29:52 +02:00
Max Proske 60681a824c Add e2e test to verify docker compose down works even when env file is missing
Signed-off-by: Max Proske <[email protected]>
2025-08-25 10:03:55 +02:00
cuiweixie 3bac9ffd08 Refactor to use maps.Copy
Signed-off-by: cuiweixie <[email protected]>
2025-08-25 08:57:52 +02:00
Guillaume Lours f266715dd0 add --provenance and --sbom flag to generated bake command line,
also add attestation per-service configuration to generated bake target

Signed-off-by: Guillaume Lours <[email protected]>
2025-08-13 09:36:22 +02:00
Guillaume Lours c2cb0aef6b only monitor attached services on up command
Signed-off-by: Guillaume Lours <[email protected]>
2025-08-08 17:27:08 +02:00
Guillaume Lours bf6d7bf47e define pull and no_cache from either service or flags values when building with bake
Signed-off-by: Guillaume Lours <[email protected]>
2025-08-05 13:52:43 +02:00
Sebastiaan van Stijn fc66da06db pkg/compose: simplify getting auth-config key
Rewrite to remove the `github.com/docker/docker/registry` dependency,
which will not be included in the upcoming "api" and "client" modules,
and will not be a public package in the module used for the daemon itself.

1. don't call "/info" API endpoint to get default registry

The `IndexServerAddress` in the `/info` endpoint was added as part of the
initial Windows implementation of the engine. For legal reasons, Microsoft
Windows (and thus Docker images based on Windows) were not allowed to be
distributed through non-Microsoft infrastructure. As a temporary solution,
a dedicated "registry-win-tp3.docker.io" registry was created to serve
Windows images.

Using separate registries was not an ideal solution, and a more permanent
solution was created by introducing "foreign image layers" in the distribution
spec, after which the "registry-win-tp3.docker.io" ceased to exist, and
removed from the engine through docker/docker PR 21100.

However, the `ElectAuthServer` was left in place, quoting from that PR;

> make the client check which default registry the daemon uses is still
> more correct than leaving it up to the client, even if it won't technically
> matter after this PR. There may be some backward compatibility scenarios
> where `ElectAuthServer` [sic] is still helpful.

That comment was 10 Years ago, and the CLI stopped using this information,
as the default registry is not configurable, so in practice was a static
value. (see https://github.com/docker/cli/commit/b4ca1c7368daeead400fcc1b8f2d61951a0d9d1e).

2. replace `ParseRepositoryInfo` and `GetAuthConfigKey` with local impl

The `ParseRepositoryInfo` function was originally implemented for use by
the daemon itself. It returns a `RepositoryInfo` struct that holds information
about the repository and the registry the repository can be found in.

As it was written for use by the daemon, it also was designed to be used
in combination with the daemon's configuration (such as mirrors, and
insecure registries). If no daemon configuration is present, which would
be the case when used in a CLI, it uses fallback logic as used in the daemon
to detect if the registry is running on a localhost / loopback address,
because such addresses are allowed to be "insecure" by default; this includes
resolving the IP-address of the host (if it's not an IP-address).

Unfortunately, these functions (and related types) were reused in the
CLI and many other places, which resulted in those types to be deeply
ingrained in interfaces and (external) code.

For compose; it was only used to get the "auth-config key" to use for
looking up auth information from the credentials store, which still
needs special handling for the "default" (docker hub) domain, which
unlike other image references doesn't use the hostname included in
the image reference for the actual registry (and key for storing
auth).

For those that want to follow along;

First, note that `GetAuthConfig` only requires a `registry.IndexInfo`, so not
the whole `RepositoryInfo` struct;
https://github.com/moby/moby/blob/v28.3.3/registry/types.go#L8-L24

From the `registry.IndexInfo` it only uses the `IsOfficial` and `Name` fields;
https://github.com/moby/moby/blob/v28.3.3/registry/config.go#L390-L395

But to get the `IndexInfo`, `ParseRepositoryInfo` is needed, which first
takes the image reference's "domain name" (e.g. `docker.io`);
https://github.com/moby/moby/blob/v28.3.3/registry/config.go#L421

This gets "normalized" for some cases where the `info.IndexServerAddress`
was incorrectly assumed to be the canonical domain for Docker Hub registry,
and which _does_ happen to also be accessible as a "v2" registry.
https://github.com/moby/moby/blob/v28.3.3/registry/config.go#L334-L341

After normalizing, it checks if it's a docker hub address ("docker.io"
after normalizing); Docker Hub is always required to use a secure
connection, so no detection happens, and the `Official` field is set
to indicate it's Docker Hub (this code path was already simplified
as historically it would try to find daemon configuration (or otherwise
use a default) for Mirror configuration;
https://github.com/moby/moby/blob/v28.3.3/registry/config.go#L420-L443

For non-Docker Hub registries, it also sets the name, and attempts
to detect if the registry is allowed to be "insecure";
https://github.com/moby/moby/blob/v28.3.3/registry/config.go#L435-L442

Which (as mentioned) involves parsing the address and, if needed, resolving
the hostname
https://github.com/moby/moby/blob/v28.3.3/registry/config.go#L445-L481

As `Insecure` is not used for looking up the auth-config key, all of the
above can be reduced to;

- Is the hostname obtained from the image reference "docker.io" (after normalizing)?
- If so, use the special `https://index.docker.io/v1/` as auth-config key (another horrible remnant)
- Otherwise use the hostname obtained from the image reference as-is

Signed-off-by: Sebastiaan van Stijn <[email protected]>
2025-08-05 10:08:23 +02:00
Sebastiaan van Stijn 909211dd61 use cli-plugins/metadata package
The metadata types and consts where moved to a separate package,
so update the code to use the new location instead of the aliases
provided.

Signed-off-by: Sebastiaan van Stijn <[email protected]>
2025-08-05 10:01:53 +02:00
Nicolas De Loof 2c12ad19db use log API for containers we didn't attached to
Signed-off-by: Nicolas De Loof <[email protected]>
2025-07-29 14:23:24 +02:00
Guillaume Lours 038ea8441a apply BUILDKIT_PROGRESS value when building with bake
Signed-off-by: Guillaume Lours <[email protected]>
2025-07-29 11:45:33 +02:00
Guillaume Lours 9e98e6101e add missing _MODEL suffix to model variable pass to dependent services of a model
Signed-off-by: Guillaume Lours <[email protected]>
2025-07-29 09:40:46 +02:00
keitosuwahara 52f04229c0 fixed lint error
Signed-off-by: keitosuwahara <[email protected]>
2025-07-28 10:07:03 +02:00
keitosuwahara 28895d0322 fix lint error
Signed-off-by: keitosuwahara <[email protected]>
2025-07-28 10:07:03 +02:00
keitosuwahara a926f7d717 Elimneted magic string
Signed-off-by: keitosuwahara <[email protected]>
2025-07-28 10:07:03 +02:00
Nicolas De Loof fe046915eb buildkit require os.Stdout to access the raw terminal
Signed-off-by: Nicolas De Loof <[email protected]>
2025-07-28 09:25:35 +02:00
keitosuwahara adbd61e5d6 fixed lint error
Signed-off-by: keitosuwahara <[email protected]>
2025-07-27 19:36:40 +02:00
keitosuwahara e37ac04329 deleted useless comment
Signed-off-by: keitosuwahara <[email protected]>
2025-07-27 19:36:40 +02:00
keitosuwahara cab2c2a44e Refactoring of redundant condition checks
Signed-off-by: keitosuwahara <[email protected]>
2025-07-27 19:36:40 +02:00
keitosuwahara 1946de598d improved lint error
Signed-off-by: keitosuwahara <[email protected]>
2025-07-27 15:12:38 +02:00
keitosuwahara 8e29a138aa improved test
Signed-off-by: keitosuwahara <[email protected]>
2025-07-27 15:12:38 +02:00
keitosuwahara 3c8da0afee Add test of json.go
Signed-off-by: keitosuwahara <[email protected]>
2025-07-27 15:12:38 +02:00
keitosuwahara 1b12c867c5 add Streams Comment
Signed-off-by: keitosuwahara <[email protected]>
2025-07-27 14:57:43 +02:00
Guillaume Lours f6ddd6ae88 use output registry when push true and load to docker store if not
Signed-off-by: Guillaume Lours <[email protected]>
2025-07-23 15:49:19 +02:00
Nicolas De Loof fd954f266c show build progress during watch rebuild
Signed-off-by: Nicolas De Loof <[email protected]>
2025-07-23 13:57:46 +02:00