Skip to content

Commit 6756732

Browse files
authored
Merge pull request docker#9512 from ulyssessouza/import-dotenv-to-osenv
Import dotenv file to os environment
2 parents dbafb02 + 67c13cf commit 6756732

File tree

1 file changed

+29
-0
lines changed

1 file changed

+29
-0
lines changed

cmd/compose/compose.go

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@ import (
2727

2828
"github.com/compose-spec/compose-go/cli"
2929
"github.com/compose-spec/compose-go/types"
30+
composegoutils "github.com/compose-spec/compose-go/utils"
3031
dockercli "github.com/docker/cli/cli"
3132
"github.com/docker/cli/cli-plugins/manager"
3233
"github.com/docker/cli/cli/command"
@@ -257,6 +258,10 @@ func RootCommand(dockerCli command.Cli, backend api.Service) *cobra.Command {
257258
}
258259
},
259260
PersistentPreRunE: func(cmd *cobra.Command, args []string) error {
261+
err := setEnvWithDotEnv(&opts)
262+
if err != nil {
263+
return err
264+
}
260265
parent := cmd.Root()
261266
if parent != nil {
262267
parentPrerun := parent.PersistentPreRunE
@@ -333,3 +338,27 @@ func RootCommand(dockerCli command.Cli, backend api.Service) *cobra.Command {
333338
command.Flags().MarkHidden("verbose") //nolint:errcheck
334339
return command
335340
}
341+
342+
func setEnvWithDotEnv(prjOpts *projectOptions) error {
343+
options, err := prjOpts.toProjectOptions()
344+
if err != nil {
345+
return compose.WrapComposeError(err)
346+
}
347+
workingDir, err := options.GetWorkingDir()
348+
if err != nil {
349+
return err
350+
}
351+
352+
envFromFile, err := cli.GetEnvFromFile(composegoutils.GetAsEqualsMap(os.Environ()), workingDir, options.EnvFile)
353+
if err != nil {
354+
return err
355+
}
356+
for k, v := range envFromFile {
357+
if _, ok := os.LookupEnv(k); !ok {
358+
if err = os.Setenv(k, v); err != nil {
359+
return err
360+
}
361+
}
362+
}
363+
return nil
364+
}

0 commit comments

Comments
 (0)