do not delete same image twice when cleaning up

This commit is contained in:
Lukas Elsner 2019-10-13 14:46:06 -06:00
parent 42a349c423
commit a2a62fb46e
3 changed files with 171 additions and 84 deletions

View file

@ -3,6 +3,7 @@ package actions
import (
"github.com/containrrr/watchtower/internal/util"
"github.com/containrrr/watchtower/pkg/container"
"github.com/deckarep/golang-set"
log "github.com/sirupsen/logrus"
)
@ -73,11 +74,22 @@ func stopStaleContainer(container container.Container, client container.Client,
}
func restartContainersInSortedOrder(containers []container.Container, client container.Client, params UpdateParams) {
toDelete := mapset.NewSet()
for _, container := range containers {
if !container.Stale {
continue
}
restartStaleContainer(container, client, params)
toDelete.Add(container)
}
if params.Cleanup {
iterator := toDelete.Iterator()
for c := range iterator.C {
cont := c.(container.Container)
if err := client.RemoveImage(cont); err != nil {
log.Error(err)
}
}
}
}
@ -100,12 +112,6 @@ func restartStaleContainer(container container.Container, client container.Clien
executePostUpdateCommand(client, newContainerID)
}
}
if params.Cleanup {
if err := client.RemoveImage(container); err != nil {
log.Error(err)
}
}
}
func checkDependencies(containers []container.Container) {