MCPcopy
hub / github.com/docker/compose / propagateDockerEndpoint

Method propagateDockerEndpoint

pkg/compose/shellout.go:53–90  ·  view source on GitHub ↗

propagateDockerEndpoint produces DOCKER_* env vars for a child CLI plugin to target the same docker endpoint `cleanup` func MUST be called after child process completion to enforce removal of cert files

()

Source from the content-addressed store, hash-verified

51// propagateDockerEndpoint produces DOCKER_* env vars for a child CLI plugin to target the same docker endpoint
52// `cleanup` func MUST be called after child process completion to enforce removal of cert files
53func (s *composeService) propagateDockerEndpoint() ([]string, func(), error) {
54 cleanup := func() {}
55 env := types.Mapping{}
56
57 env[command.EnvOverrideContext] = s.dockerCli.CurrentContext()
58 env["USER_AGENT"] = "compose/" + internal.Version
59
60 endpoint := s.dockerCli.DockerEndpoint()
61 env[client.EnvOverrideHost] = endpoint.Host
62 if endpoint.TLSData != nil {
63 certs, err := os.MkdirTemp("", "compose")
64 if err != nil {
65 return nil, cleanup, err
66 }
67 cleanup = func() {
68 _ = os.RemoveAll(certs)
69 }
70 env[client.EnvOverrideCertPath] = certs
71 env["DOCKER_TLS"] = "1"
72 if !endpoint.SkipTLSVerify {
73 env[client.EnvTLSVerify] = "1"
74 }
75
76 err = os.WriteFile(filepath.Join(certs, flags.DefaultKeyFile), endpoint.TLSData.Key, 0o600)
77 if err != nil {
78 return nil, cleanup, err
79 }
80 err = os.WriteFile(filepath.Join(certs, flags.DefaultCertFile), endpoint.TLSData.Cert, 0o600)
81 if err != nil {
82 return nil, cleanup, err
83 }
84 err = os.WriteFile(filepath.Join(certs, flags.DefaultCaFile), endpoint.TLSData.CA, 0o600)
85 if err != nil {
86 return nil, cleanup, err
87 }
88 }
89 return env.Values(), cleanup, nil
90}

Callers 2

newModelAPIMethod · 0.95
doBuildBakeMethod · 0.95

Calls 4

RemoveAllMethod · 0.80
WriteFileMethod · 0.80
CurrentContextMethod · 0.65
DockerEndpointMethod · 0.45

Tested by

no test coverage detected