mirror of https://github.com/docker/compose.git
Merge pull request #9512 from ulyssessouza/import-dotenv-to-osenv
Import dotenv file to os environment
This commit is contained in:
commit
6756732fe4
|
@ -27,6 +27,7 @@ import (
|
||||||
|
|
||||||
"github.com/compose-spec/compose-go/cli"
|
"github.com/compose-spec/compose-go/cli"
|
||||||
"github.com/compose-spec/compose-go/types"
|
"github.com/compose-spec/compose-go/types"
|
||||||
|
composegoutils "github.com/compose-spec/compose-go/utils"
|
||||||
dockercli "github.com/docker/cli/cli"
|
dockercli "github.com/docker/cli/cli"
|
||||||
"github.com/docker/cli/cli-plugins/manager"
|
"github.com/docker/cli/cli-plugins/manager"
|
||||||
"github.com/docker/cli/cli/command"
|
"github.com/docker/cli/cli/command"
|
||||||
|
@ -257,6 +258,10 @@ func RootCommand(dockerCli command.Cli, backend api.Service) *cobra.Command {
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
PersistentPreRunE: func(cmd *cobra.Command, args []string) error {
|
PersistentPreRunE: func(cmd *cobra.Command, args []string) error {
|
||||||
|
err := setEnvWithDotEnv(&opts)
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
parent := cmd.Root()
|
parent := cmd.Root()
|
||||||
if parent != nil {
|
if parent != nil {
|
||||||
parentPrerun := parent.PersistentPreRunE
|
parentPrerun := parent.PersistentPreRunE
|
||||||
|
@ -333,3 +338,27 @@ func RootCommand(dockerCli command.Cli, backend api.Service) *cobra.Command {
|
||||||
command.Flags().MarkHidden("verbose") //nolint:errcheck
|
command.Flags().MarkHidden("verbose") //nolint:errcheck
|
||||||
return command
|
return command
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func setEnvWithDotEnv(prjOpts *projectOptions) error {
|
||||||
|
options, err := prjOpts.toProjectOptions()
|
||||||
|
if err != nil {
|
||||||
|
return compose.WrapComposeError(err)
|
||||||
|
}
|
||||||
|
workingDir, err := options.GetWorkingDir()
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
envFromFile, err := cli.GetEnvFromFile(composegoutils.GetAsEqualsMap(os.Environ()), workingDir, options.EnvFile)
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
for k, v := range envFromFile {
|
||||||
|
if _, ok := os.LookupEnv(k); !ok {
|
||||||
|
if err = os.Setenv(k, v); err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
Loading…
Reference in New Issue