From de64016fb1d92f1ebdfaefb5cb8532a80f072433 Mon Sep 17 00:00:00 2001 From: Nicolas De Loof Date: Thu, 6 Mar 2025 16:12:51 +0100 Subject: [PATCH] only load env_file after services have been selected Signed-off-by: Nicolas De Loof --- cmd/compose/compose.go | 7 ++++++- go.mod | 2 +- go.sum | 1 + pkg/e2e/env_file_test.go | 7 +++++++ pkg/e2e/fixtures/env_file/compose.yaml | 8 ++++++++ 5 files changed, 23 insertions(+), 2 deletions(-) create mode 100644 pkg/e2e/fixtures/env_file/compose.yaml diff --git a/cmd/compose/compose.go b/cmd/compose/compose.go index 450bb165734..7f83bf8a550 100644 --- a/cmd/compose/compose.go +++ b/cmd/compose/compose.go @@ -170,7 +170,7 @@ func (o *ProjectOptions) WithServices(dockerCli command.Cli, fn ProjectServicesF return Adapt(func(ctx context.Context, args []string) error { options := []cli.ProjectOptionsFn{ cli.WithResolvedPaths(true), - cli.WithDiscardEnvFile, + cli.WithoutEnvironmentResolution, } project, metrics, err := o.ToProject(ctx, dockerCli, args, options...) @@ -180,6 +180,11 @@ func (o *ProjectOptions) WithServices(dockerCli command.Cli, fn ProjectServicesF ctx = context.WithValue(ctx, tracing.MetricsKey{}, metrics) + project, err = project.WithServicesEnvironmentResolved(true) + if err != nil { + return err + } + return fn(ctx, project, args) }) } diff --git a/go.mod b/go.mod index b4f13478ed4..5993f95db06 100644 --- a/go.mod +++ b/go.mod @@ -7,7 +7,7 @@ require ( github.com/Microsoft/go-winio v0.6.2 github.com/acarl005/stripansi v0.0.0-20180116102854-5a71ef0e047d github.com/buger/goterm v1.0.4 - github.com/compose-spec/compose-go/v2 v2.4.9-0.20250306081139-60e14f61e9ef + github.com/compose-spec/compose-go/v2 v2.4.9-0.20250307154133-53320326687c github.com/containerd/containerd/v2 v2.0.3 github.com/containerd/platforms v1.0.0-rc.1 github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc diff --git a/go.sum b/go.sum index 5f32c62827e..f3506fd9dd3 100644 --- a/go.sum +++ b/go.sum @@ -91,6 +91,7 @@ github.com/codahale/rfc6979 v0.0.0-20141003034818-6a90f24967eb h1:EDmT6Q9Zs+SbUo github.com/codahale/rfc6979 v0.0.0-20141003034818-6a90f24967eb/go.mod h1:ZjrT6AXHbDs86ZSdt/osfBi5qfexBrKUdONk989Wnk4= github.com/compose-spec/compose-go/v2 v2.4.9-0.20250306081139-60e14f61e9ef h1:1PcqLEYTxUY28/oZCxtkkF4SpleCrO+Vckw8Skpymz4= github.com/compose-spec/compose-go/v2 v2.4.9-0.20250306081139-60e14f61e9ef/go.mod h1:6k5l/0TxCg0/2uLEhRVEsoBWBprS2uvZi32J7xub3lo= +github.com/compose-spec/compose-go/v2 v2.4.9-0.20250307154133-53320326687c/go.mod h1:6k5l/0TxCg0/2uLEhRVEsoBWBprS2uvZi32J7xub3lo= github.com/containerd/cgroups/v3 v3.0.5 h1:44na7Ud+VwyE7LIoJ8JTNQOa549a8543BmzaJHo6Bzo= github.com/containerd/cgroups/v3 v3.0.5/go.mod h1:SA5DLYnXO8pTGYiAHXz94qvLQTKfVM5GEVisn4jpins= github.com/containerd/console v1.0.4 h1:F2g4+oChYvBTsASRTz8NP6iIAi97J3TtSAsLbIFn4ro= diff --git a/pkg/e2e/env_file_test.go b/pkg/e2e/env_file_test.go index 5b546764218..ed7c84318db 100644 --- a/pkg/e2e/env_file_test.go +++ b/pkg/e2e/env_file_test.go @@ -30,3 +30,10 @@ func TestRawEnvFile(t *testing.T) { res := c.RunDockerComposeCmd(t, "-f", "./fixtures/dotenv/raw.yaml", "run", "test") assert.Equal(t, strings.TrimSpace(res.Stdout()), "'{\"key\": \"value\"}'") } + +func TestUnusedMissingEnvFile(t *testing.T) { + c := NewParallelCLI(t) + defer c.cleanupWithDown(t, "unused_dotenv") + + c.RunDockerComposeCmd(t, "-f", "./fixtures/env_file/compose.yaml", "up", "-d", "serviceA") +} diff --git a/pkg/e2e/fixtures/env_file/compose.yaml b/pkg/e2e/fixtures/env_file/compose.yaml new file mode 100644 index 00000000000..07d5dfeb6f7 --- /dev/null +++ b/pkg/e2e/fixtures/env_file/compose.yaml @@ -0,0 +1,8 @@ +services: + serviceA: + image: nginx:latest + + serviceB: + image: nginx:latest + env_file: + - /doesnotexist/.env \ No newline at end of file