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

Function runExec

cmd/compose/exec.go:104–143  ·  view source on GitHub ↗
(ctx context.Context, dockerCli command.Cli, backendOptions *BackendOptions, opts execOpts)

Source from the content-addressed store, hash-verified

102}
103
104func runExec(ctx context.Context, dockerCli command.Cli, backendOptions *BackendOptions, opts execOpts) error {
105 projectName, err := opts.toProjectName(ctx, dockerCli)
106 if err != nil {
107 return err
108 }
109 projectOptions, err := opts.composeOptions.toProjectOptions() //nolint:staticcheck
110 if err != nil {
111 return err
112 }
113 lookupFn := func(k string) (string, bool) {
114 v, ok := projectOptions.Environment[k]
115 return v, ok
116 }
117 execOpts := api.RunOptions{
118 Service: opts.service,
119 Command: opts.command,
120 Environment: compose.ToMobyEnv(types.NewMappingWithEquals(opts.environment).Resolve(lookupFn)),
121 Tty: !opts.noTty,
122 User: opts.user,
123 Privileged: opts.privileged,
124 Index: opts.index,
125 Detach: opts.detach,
126 WorkingDir: opts.workingDir,
127 Interactive: opts.interactive,
128 }
129
130 backend, err := compose.NewComposeService(dockerCli, backendOptions.Options...)
131 if err != nil {
132 return err
133 }
134 exitCode, err := backend.Exec(ctx, projectName, execOpts)
135 if exitCode != 0 {
136 errMsg := fmt.Sprintf("exit status %d", exitCode)
137 if err != nil && err.Error() != "" {
138 errMsg = err.Error()
139 }
140 return cli.StatusError{StatusCode: exitCode, Status: errMsg}
141 }
142 return err
143}

Callers 1

execCommandFunction · 0.85

Calls 6

ToMobyEnvFunction · 0.92
NewComposeServiceFunction · 0.92
toProjectNameMethod · 0.80
toProjectOptionsMethod · 0.80
ErrorMethod · 0.80
ExecMethod · 0.65

Tested by

no test coverage detected