mirror of https://github.com/portainer/portainer
This fixes a bug where image/registry names that contain a port number were inadvertently truncated (because port numbers are specified with a colon, just like the image tag). For example, updating an image named `registry.example.com:5000/myimage:oldtag` with the new image tag `newtag` was incorrectly transformed into `registry.example.com:newtag`pull/6144/head
parent
a598b2d72d
commit
9ad626b36e
|
@ -74,10 +74,16 @@ func (handler *Handler) executeServiceWebhook(w http.ResponseWriter, endpoint *p
|
||||||
|
|
||||||
service.Spec.TaskTemplate.ForceUpdate++
|
service.Spec.TaskTemplate.ForceUpdate++
|
||||||
|
|
||||||
|
var imageName = strings.Split(service.Spec.TaskTemplate.ContainerSpec.Image, "@sha")[0]
|
||||||
|
|
||||||
if imageTag != "" {
|
if imageTag != "" {
|
||||||
service.Spec.TaskTemplate.ContainerSpec.Image = strings.Split(service.Spec.TaskTemplate.ContainerSpec.Image, ":")[0] + ":" + imageTag
|
var tagIndex = strings.LastIndex(imageName, ":")
|
||||||
|
if tagIndex == -1 {
|
||||||
|
tagIndex = len(imageName)
|
||||||
|
}
|
||||||
|
service.Spec.TaskTemplate.ContainerSpec.Image = imageName[:tagIndex] + ":" + imageTag
|
||||||
} else {
|
} else {
|
||||||
service.Spec.TaskTemplate.ContainerSpec.Image = strings.Split(service.Spec.TaskTemplate.ContainerSpec.Image, "@sha")[0]
|
service.Spec.TaskTemplate.ContainerSpec.Image = imageName
|
||||||
}
|
}
|
||||||
|
|
||||||
_, err = dockerClient.ServiceUpdate(context.Background(), resourceID, service.Version, service.Spec, dockertypes.ServiceUpdateOptions{QueryRegistry: true})
|
_, err = dockerClient.ServiceUpdate(context.Background(), resourceID, service.Version, service.Spec, dockertypes.ServiceUpdateOptions{QueryRegistry: true})
|
||||||
|
|
Loading…
Reference in New Issue