diff --git a/container_opts.go b/container_opts.go index d8105061f..d71c022a1 100644 --- a/container_opts.go +++ b/container_opts.go @@ -120,24 +120,24 @@ func WithImageConfigLabels(image Image) NewContainerOpts { if err != nil { return err } + if !images.IsConfigType(ic.MediaType) { + return fmt.Errorf("unknown image config media type %s", ic.MediaType) + } + var ( ociimage v1.Image config v1.ImageConfig ) - switch ic.MediaType { - case v1.MediaTypeImageConfig, images.MediaTypeDockerSchema2Config: - p, err := content.ReadBlob(ctx, image.ContentStore(), ic) - if err != nil { - return err - } - - if err := json.Unmarshal(p, &ociimage); err != nil { - return err - } - config = ociimage.Config - default: - return fmt.Errorf("unknown image config media type %s", ic.MediaType) + p, err := content.ReadBlob(ctx, image.ContentStore(), ic) + if err != nil { + return err } + + if err = json.Unmarshal(p, &ociimage); err != nil { + return err + } + config = ociimage.Config + c.Labels = config.Labels return nil } diff --git a/signals.go b/signals.go index 9d81eed87..e21df0a11 100644 --- a/signals.go +++ b/signals.go @@ -57,25 +57,24 @@ func GetOCIStopSignal(ctx context.Context, image Image, defaultSignal string) (s if err != nil { return "", err } + if !images.IsConfigType(ic.MediaType) { + return "", fmt.Errorf("unknown image config media type %s", ic.MediaType) + } + var ( ociimage v1.Image config v1.ImageConfig ) - switch ic.MediaType { - case v1.MediaTypeImageConfig, images.MediaTypeDockerSchema2Config: - p, err := content.ReadBlob(ctx, image.ContentStore(), ic) - if err != nil { - return "", err - } - - if err := json.Unmarshal(p, &ociimage); err != nil { - return "", err - } - config = ociimage.Config - default: - return "", fmt.Errorf("unknown image config media type %s", ic.MediaType) + p, err := content.ReadBlob(ctx, image.ContentStore(), ic) + if err != nil { + return "", err } + if err = json.Unmarshal(p, &ociimage); err != nil { + return "", err + } + config = ociimage.Config + if config.StopSignal == "" { return defaultSignal, nil }