diff --git a/cmd/compose/compose.go b/cmd/compose/compose.go index ae0d13f1..4632e1be 100644 --- a/cmd/compose/compose.go +++ b/cmd/compose/compose.go @@ -187,13 +187,6 @@ func (o *projectOptions) toProject(services []string, po ...cli.ProjectOptionsFn return nil, compose.WrapComposeError(err) } - ef := o.EnvFile - if ef != "" && !filepath.IsAbs(ef) { - ef, err = filepath.Abs(ef) - if err != nil { - return nil, err - } - } for i, s := range project.Services { s.CustomLabels = map[string]string{ api.ProjectLabel: project.Name, @@ -203,8 +196,8 @@ func (o *projectOptions) toProject(services []string, po ...cli.ProjectOptionsFn api.ConfigFilesLabel: strings.Join(project.ComposeFiles, ","), api.OneoffLabel: "False", // default, will be overridden by `run` command } - if ef != "" { - s.CustomLabels[api.EnvironmentFileLabel] = ef + if o.EnvFile != "" { + s.CustomLabels[api.EnvironmentFileLabel] = o.EnvFile } project.Services[i] = s } @@ -250,7 +243,7 @@ func RunningAsStandalone() bool { } // RootCommand returns the compose command with its child commands -func RootCommand(dockerCli command.Cli, backend api.Service) *cobra.Command { +func RootCommand(dockerCli command.Cli, backend api.Service) *cobra.Command { //nolint:gocyclo // filter out useless commandConn.CloseWrite warning message that can occur // when using a remote context that is unreachable: "commandConn.CloseWrite: commandconn: failed to wait: signal: killed" // https://github.com/docker/cli/blob/e1f24d3c93df6752d3c27c8d61d18260f141310c/cli/connhelper/commandconn/commandconn.go#L203-L215 @@ -326,6 +319,12 @@ func RootCommand(dockerCli command.Cli, backend api.Service) *cobra.Command { opts.ProjectDir = opts.WorkDir fmt.Fprint(os.Stderr, aec.Apply("option '--workdir' is DEPRECATED at root level! Please use '--project-directory' instead.\n", aec.RedF)) } + if opts.EnvFile != "" && !filepath.IsAbs(opts.EnvFile) { + opts.EnvFile, err = filepath.Abs(opts.EnvFile) + if err != nil { + return err + } + } if parallel > 0 { backend.MaxConcurrency(parallel) }