mirror of
https://github.com/containrrr/watchtower.git
synced 2025-12-13 21:56:38 +01:00
fix: empty out the aliases on recreation (#1699)
* fix: empty out the aliases on recreation * test alias purging
This commit is contained in:
parent
a5d7f23d2e
commit
bba9b2b100
2 changed files with 35 additions and 1 deletions
|
|
@ -208,11 +208,25 @@ func (client dockerClient) StopContainer(c t.Container, timeout time.Duration) e
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (client dockerClient) GetNetworkConfig(c t.Container) *network.NetworkingConfig {
|
||||||
|
config := &network.NetworkingConfig{
|
||||||
|
EndpointsConfig: c.ContainerInfo().NetworkSettings.Networks,
|
||||||
|
}
|
||||||
|
|
||||||
|
for _, ep := range config.EndpointsConfig {
|
||||||
|
// This keeps accumulating across upgrades with no apparent added value
|
||||||
|
// so throwing the information away to prevent overflows.
|
||||||
|
ep.Aliases = nil
|
||||||
|
}
|
||||||
|
return config
|
||||||
|
}
|
||||||
|
|
||||||
func (client dockerClient) StartContainer(c t.Container) (t.ContainerID, error) {
|
func (client dockerClient) StartContainer(c t.Container) (t.ContainerID, error) {
|
||||||
bg := context.Background()
|
bg := context.Background()
|
||||||
config := c.GetCreateConfig()
|
config := c.GetCreateConfig()
|
||||||
hostConfig := c.GetCreateHostConfig()
|
hostConfig := c.GetCreateHostConfig()
|
||||||
networkConfig := &network.NetworkingConfig{EndpointsConfig: c.ContainerInfo().NetworkSettings.Networks}
|
networkConfig := client.GetNetworkConfig(c)
|
||||||
|
|
||||||
// simpleNetworkConfig is a networkConfig with only 1 network.
|
// simpleNetworkConfig is a networkConfig with only 1 network.
|
||||||
// see: https://github.com/docker/docker/issues/29265
|
// see: https://github.com/docker/docker/issues/29265
|
||||||
simpleNetworkConfig := func() *network.NetworkingConfig {
|
simpleNetworkConfig := func() *network.NetworkingConfig {
|
||||||
|
|
@ -228,6 +242,7 @@ func (client dockerClient) StartContainer(c t.Container) (t.ContainerID, error)
|
||||||
name := c.Name()
|
name := c.Name()
|
||||||
|
|
||||||
log.Infof("Creating %s", name)
|
log.Infof("Creating %s", name)
|
||||||
|
|
||||||
createdContainer, err := client.api.ContainerCreate(bg, config, hostConfig, simpleNetworkConfig, nil, name)
|
createdContainer, err := client.api.ContainerCreate(bg, config, hostConfig, simpleNetworkConfig, nil, name)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return "", err
|
return "", err
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,7 @@
|
||||||
package container
|
package container
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
"github.com/docker/docker/api/types/network"
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
"github.com/containrrr/watchtower/internal/util"
|
"github.com/containrrr/watchtower/internal/util"
|
||||||
|
|
@ -284,6 +285,24 @@ var _ = Describe("the client", func() {
|
||||||
})
|
})
|
||||||
})
|
})
|
||||||
})
|
})
|
||||||
|
Describe(`GetNetworkConfig`, func() {
|
||||||
|
When(`providing a container with network aliases`, func() {
|
||||||
|
It(`should purge the aliases`, func() {
|
||||||
|
aliases := []string{"One", "Two"}
|
||||||
|
client := dockerClient{
|
||||||
|
api: docker,
|
||||||
|
ClientOptions: ClientOptions{PullImages: false, IncludeRestarting: false},
|
||||||
|
}
|
||||||
|
container := MockContainer(WithImageName("docker.io/prefix/imagename:latest"))
|
||||||
|
endpoints := map[string]*network.EndpointSettings{
|
||||||
|
`test`: {Aliases: aliases},
|
||||||
|
}
|
||||||
|
container.containerInfo.NetworkSettings = &types.NetworkSettings{Networks: endpoints}
|
||||||
|
Expect(container.ContainerInfo().NetworkSettings.Networks[`test`].Aliases).To(Equal(aliases))
|
||||||
|
Expect(client.GetNetworkConfig(container).EndpointsConfig[`test`].Aliases).To(BeEmpty())
|
||||||
|
})
|
||||||
|
})
|
||||||
|
})
|
||||||
})
|
})
|
||||||
|
|
||||||
// Capture logrus output in buffer
|
// Capture logrus output in buffer
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue