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
()
| 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 |
| 53 | func (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 | } |
no test coverage detected