MCPcopy
hub / github.com/dagger/container-use / buildBase

Method buildBase

environment/environment.go:154–218  ·  view source on GitHub ↗
(ctx context.Context, baseSourceDir *dagger.Directory)

Source from the content-addressed store, hash-verified

152}
153
154func (env *Environment) buildBase(ctx context.Context, baseSourceDir *dagger.Directory) (*dagger.Container, error) {
155 container := env.dag.
156 Container().
157 From(env.State.Config.BaseImage).
158 WithWorkdir(env.State.Config.Workdir)
159
160 container, err := containerWithEnvAndSecrets(env.dag, container, env.State.Config.Env, env.State.Config.Secrets)
161 if err != nil {
162 return nil, err
163 }
164
165 runCommands := func(commands []string) error {
166 for _, command := range commands {
167 var err error
168
169 container = container.WithExec([]string{"sh", "-c", command})
170
171 exitCode, err := container.ExitCode(ctx)
172 if err != nil {
173 var exitErr *dagger.ExecError
174 if errors.As(err, &exitErr) {
175 env.Notes.AddCommand(command, exitErr.ExitCode, exitErr.Stdout, exitErr.Stderr)
176 return fmt.Errorf("exit code %d.\nstdout: %s\nstderr: %s\n%w", exitErr.ExitCode, exitErr.Stdout, exitErr.Stderr, err)
177 }
178
179 return err
180 }
181 stdout, err := container.Stdout(ctx)
182 if err != nil {
183 return fmt.Errorf("failed to get stdout: %w", err)
184 }
185
186 stderr, err := container.Stderr(ctx)
187 if err != nil {
188 return fmt.Errorf("failed to get stderr: %w", err)
189 }
190
191 env.Notes.AddCommand(command, exitCode, stdout, stderr)
192 }
193
194 return nil
195 }
196
197 // Run setup commands without the source directory for caching purposes
198 if err := runCommands(env.State.Config.SetupCommands); err != nil {
199 return nil, fmt.Errorf("setup command failed: %w", err)
200 }
201
202 env.Services, err = env.startServices(ctx)
203 if err != nil {
204 return nil, fmt.Errorf("failed to start services: %w", err)
205 }
206 for _, service := range env.Services {
207 container = container.WithServiceBinding(service.Config.Name, service.svc)
208 }
209
210 container = container.WithDirectory(".", baseSourceDir)
211

Callers 2

NewFunction · 0.95
UpdateConfigMethod · 0.95

Calls 3

startServicesMethod · 0.95
AddCommandMethod · 0.80

Tested by

no test coverage detected