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

Function resolveImageDigests

cmd/compose/config.go:302–333  ·  view source on GitHub ↗
(ctx context.Context, dockerCli command.Cli, model map[string]any)

Source from the content-addressed store, hash-verified

300}
301
302func resolveImageDigests(ctx context.Context, dockerCli command.Cli, model map[string]any) (err error) {
303 // create a pseudo-project so we can rely on WithImagesResolved to resolve images
304 p := &types.Project{
305 Services: types.Services{},
306 }
307 services := model["services"].(map[string]any)
308 for name, s := range services {
309 service := s.(map[string]any)
310 if image, ok := service["image"]; ok {
311 p.Services[name] = types.ServiceConfig{
312 Image: image.(string),
313 }
314 }
315 }
316
317 p, err = p.WithImagesResolved(compose.ImageDigestResolver(ctx, dockerCli.ConfigFile(), dockerCli.Client()))
318 if err != nil {
319 return err
320 }
321
322 // Collect image resolved with digest and update model accordingly
323 for name, s := range services {
324 service := s.(map[string]any)
325 config := p.Services[name]
326 if config.Image != "" {
327 service["image"] = config.Image
328 }
329 services[name] = service
330 }
331 model["services"] = services
332 return nil
333}
334
335func formatModel(model map[string]any, format string) (content []byte, err error) {
336 switch format {

Callers 1

runConfigNoInterpolateFunction · 0.85

Calls 3

ImageDigestResolverFunction · 0.92
ConfigFileMethod · 0.45
ClientMethod · 0.45

Tested by

no test coverage detected