From 86c925fbd3f754c1c7de882a5fd154d24d0e6a05 Mon Sep 17 00:00:00 2001 From: Ulysses Souza Date: Fri, 12 Aug 2022 20:13:34 +0200 Subject: [PATCH] Reset the DockerCli and APIClient after loading the environment file This forces a re-evaluation of the environment variables. Signed-off-by: Ulysses Souza --- cmd/compose/compose.go | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/cmd/compose/compose.go b/cmd/compose/compose.go index 10d110884..21c5695a8 100644 --- a/cmd/compose/compose.go +++ b/cmd/compose/compose.go @@ -32,6 +32,8 @@ import ( dockercli "github.com/docker/cli/cli" "github.com/docker/cli/cli-plugins/manager" "github.com/docker/cli/cli/command" + "github.com/docker/cli/cli/flags" + "github.com/docker/docker/client" "github.com/morikuni/aec" "github.com/pkg/errors" "github.com/sirupsen/logrus" @@ -291,6 +293,18 @@ func RootCommand(dockerCli command.Cli, backend api.Service) *cobra.Command { if err != nil { return err } + + // Reset DockerCli and APIClient to get possible `DOCKER_HOST` and/or `DOCKER_CONTEXT` loaded from environment file + err = dockerCli.Apply(func(cli *command.DockerCli) error { + return cli.Initialize(flags.NewClientOptions(), + command.WithInitializeClient(func(_ *command.DockerCli) (client.APIClient, error) { + return nil, nil + })) + }) + if err != nil { + return err + } + parent := cmd.Root() if parent != nil { parentPrerun := parent.PersistentPreRunE