in command-runner/internal/containers/docker/docker_build.go [21:68]
func (dcs *dockerContainerService) BuildImage(input ctypes.BuildImageInput) common.Executor {
return func(ctx context.Context) error {
logger := log.Ctx(ctx)
if input.Platform != "" {
logger.Info().Msgf("%sdocker build -t %s --platform %s %s", logPrefix, input.ImageTag, input.Platform, input.ContextDir)
} else {
logger.Info().Msgf("%sdocker build -t %s %s", logPrefix, input.ImageTag, input.ContextDir)
}
if common.Dryrun(ctx) {
return nil
}
cli, err := getDockerClient(ctx)
if err != nil {
return err
}
defer cli.Close()
logger.Debug().Msgf("Building image from '%v'", input.ContextDir)
tags := []string{input.ImageTag}
options := types.ImageBuildOptions{
Tags: tags,
Remove: true,
Platform: input.Platform,
AuthConfigs: loadDockerAuthConfigs(ctx),
Dockerfile: input.Dockerfile,
}
buildContext, err := createBuildContext(ctx, input.ContextDir, input.Dockerfile)
if err != nil {
return err
}
defer buildContext.Close()
logger.Debug().Msgf("Creating image from context dir '%s' with tag '%s' and platform '%s'", input.ContextDir, input.ImageTag, input.Platform)
resp, err := cli.ImageBuild(ctx, buildContext, options)
if err != nil {
return err
}
err = logDockerResponse(log.Ctx(ctx), resp.Body, err != nil)
if err != nil {
return err
}
return nil
}
}