Ver Fonte

resolve --env-file as absolute path

Signed-off-by: Nicolas De Loof <[email protected]>
Nicolas De Loof há 2 anos atrás
pai
commit
d4a4dcf4ee
1 ficheiros alterados com 9 adições e 10 exclusões
  1. 9 10
      cmd/compose/compose.go

+ 9 - 10
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)
 			}