diff --git a/builder/builder-next/adapters/containerimage/pull.go b/builder/builder-next/adapters/containerimage/pull.go index 464c0e3ae6..8e7105762d 100644 --- a/builder/builder-next/adapters/containerimage/pull.go +++ b/builder/builder-next/adapters/containerimage/pull.go @@ -381,6 +381,7 @@ func (p *puller) Snapshot(ctx context.Context) (cache.ImmutableRef, error) { return nil, err } + platform := platforms.Only(p.platform) var ( schema1Converter *schema1.Converter handlers []images.Handler @@ -413,7 +414,9 @@ func (p *puller) Snapshot(ctx context.Context) (cache.ImmutableRef, error) { // Set any children labels for that content childrenHandler = images.SetChildrenLabels(p.is.ContentStore, childrenHandler) // Filter the children by the platform - childrenHandler = images.FilterPlatforms(childrenHandler, platforms.Default()) + childrenHandler = images.FilterPlatforms(childrenHandler, platform) + // Limit manifests pulled to the best match in an index + childrenHandler = images.LimitManifests(childrenHandler, platform, 1) handlers = append(handlers, remotes.FetchHandler(p.is.ContentStore, fetcher), @@ -434,12 +437,12 @@ func (p *puller) Snapshot(ctx context.Context) (cache.ImmutableRef, error) { } } - mfst, err := images.Manifest(ctx, p.is.ContentStore, p.desc, platforms.Default()) + mfst, err := images.Manifest(ctx, p.is.ContentStore, p.desc, platform) if err != nil { return nil, err } - config, err := images.Config(ctx, p.is.ContentStore, p.desc, platforms.Default()) + config, err := images.Config(ctx, p.is.ContentStore, p.desc, platform) if err != nil { return nil, err }