diff --git a/pkg/container/client.go b/pkg/container/client.go index c6c37de..dc83615 100644 --- a/pkg/container/client.go +++ b/pkg/container/client.go @@ -329,9 +329,17 @@ func (client dockerClient) IsContainerStale(container t.Container, params t.Upda } func (client dockerClient) HasNewImage(ctx context.Context, container t.Container) (hasNew bool, latestImage t.ImageID, err error) { - currentImageID := t.ImageID(container.ContainerInfo().ContainerJSONBase.Image) + container_info := container.ContainerInfo() + currentImageID := t.ImageID(container_info.ContainerJSONBase.Image) imageName := container.ImageName() + // If the original-image-id label is set, it overwrites the image id reported by docker + imageIDSetByLabel, ok := container_info.Config.Labels[originalImageIDLabel] + if ok { + currentImageID = t.ImageID(imageIDSetByLabel) + log.Debugf("Original image id for %s found: (%s)", imageName, currentImageID.ShortID()) + } + newImageInfo, _, err := client.api.ImageInspectWithRaw(ctx, imageName) if err != nil { return false, currentImageID, err diff --git a/pkg/container/container.go b/pkg/container/container.go index 10ed677..7b18bb2 100644 --- a/pkg/container/container.go +++ b/pkg/container/container.go @@ -104,6 +104,10 @@ func (c Container) SafeImageID() wt.ImageID { func (c Container) ImageName() string { // Compatibility w/ Zodiac deployments imageName, ok := c.getLabelValue(zodiacLabel) + // If the original-image-name label is set, it overwrites the image name reported by docker + if !ok { + imageName, ok = c.getLabelValue(originalImageNameLabel) + } if !ok { imageName = c.containerInfo.Config.Image } diff --git a/pkg/container/metadata.go b/pkg/container/metadata.go index 8ac5f34..7a1ffca 100644 --- a/pkg/container/metadata.go +++ b/pkg/container/metadata.go @@ -10,6 +10,8 @@ const ( noPullLabel = "com.centurylinklabs.watchtower.no-pull" dependsOnLabel = "com.centurylinklabs.watchtower.depends-on" zodiacLabel = "com.centurylinklabs.zodiac.original-image" + originalImageNameLabel = "com.centurylinklabs.watchtower.original-image" + originalImageIDLabel = "com.centurylinklabs.watchtower.original-image-id" scope = "com.centurylinklabs.watchtower.scope" preCheckLabel = "com.centurylinklabs.watchtower.lifecycle.pre-check" postCheckLabel = "com.centurylinklabs.watchtower.lifecycle.post-check"