diff --git a/cmd/compose/compose.go b/cmd/compose/compose.go index b73ef92d9d0..da3c7def26b 100644 --- a/cmd/compose/compose.go +++ b/cmd/compose/compose.go @@ -693,7 +693,7 @@ func setEnvWithDotEnv(opts ProjectOptions) error { return nil } for k, v := range envFromFile { - if _, ok := os.LookupEnv(k); !ok { + if _, ok := os.LookupEnv(k); !ok && strings.HasPrefix(k, "COMPOSE_") { if err = os.Setenv(k, v); err != nil { return nil } diff --git a/cmd/compose/run.go b/cmd/compose/run.go index 2bf126fefb9..714bcad5136 100644 --- a/cmd/compose/run.go +++ b/cmd/compose/run.go @@ -120,8 +120,8 @@ func (options runOptions) apply(project *types.Project) (*types.Project, error) return project, nil } -func (options runOptions) getEnvironment() (types.Mapping, error) { - environment := types.NewMappingWithEquals(options.environment).Resolve(os.LookupEnv).ToMapping() +func (options runOptions) getEnvironment(resolve func(string) (string, bool)) (types.Mapping, error) { + environment := types.NewMappingWithEquals(options.environment).Resolve(resolve).ToMapping() for _, file := range options.envFiles { f, err := os.Open(file) if err != nil { @@ -289,7 +289,7 @@ func runRun(ctx context.Context, backend api.Service, project *types.Project, op buildForRun = &bo } - environment, err := options.getEnvironment() + environment, err := options.getEnvironment(project.Environment.Resolve) if err != nil { return err } diff --git a/pkg/compose/build_bake.go b/pkg/compose/build_bake.go index e9241c1b879..7b53887154e 100644 --- a/pkg/compose/build_bake.go +++ b/pkg/compose/build_bake.go @@ -331,7 +331,7 @@ func (s *composeService) doBuildBake(ctx context.Context, project *types.Project } cmd := exec.CommandContext(ctx, buildx.Path, args...) - err = s.prepareShellOut(ctx, project.Environment, cmd) + err = s.prepareShellOut(ctx, types.NewMapping(os.Environ()), cmd) if err != nil { return nil, err }