always exclude containers that have the com.centurylinklabs.watchtower.enable set to false.

Fixes #169
pull/173/head
Fabrizio Steiner 6 years ago
parent 026a04b59b
commit 6c12aee975

@ -131,6 +131,18 @@ docker run -d --label=com.centurylinklabs.watchtower.stop-signal=SIGHUP someimag
By default, watchtower will watch all containers. However, sometimes only some containers should be updated.
If you need to exclude some containers, set the *com.centurylinklabs.watchtower.enable* label to `false`.
```docker
LABEL com.centurylinklabs.watchtower.enable="false"
```
Or, it can be specified as part of the `docker run` command line:
```bash
docker run -d --label=com.centurylinklabs.watchtower.enable=false someimage
```
If you need to only include only some containers, pass the --label-enable flag on startup and set the *com.centurylinklabs.watchtower.enable* label with a value of true for the containers you want to watch.
```docker

@ -37,10 +37,23 @@ func filterByNames(names []string, baseFilter Filter) Filter {
// Filters out containers that don't have the 'enableLabel'
func filterByEnableLabel(baseFilter Filter) Filter {
return func(c FilterableContainer) bool {
// If label filtering is enabled, containers should only be enabled
// if the label is specifically set to true.
// If label filtering is enabled, containers should only be considered
// if the label is specifically set.
_, ok := c.Enabled()
if !ok {
return false
}
return baseFilter(c)
}
}
// Filters out containers that have a 'enableLabel' and is set to disable.
func filterByDisabledLabel(baseFilter Filter) Filter {
return func(c FilterableContainer) bool {
enabledLabel, ok := c.Enabled()
if !ok || !enabledLabel {
if ok && !enabledLabel {
// If the label has been set and it demands a disable
return false
}
@ -57,5 +70,6 @@ func BuildFilter(names []string, enableLabel bool) Filter {
// if the label is specifically set.
filter = filterByEnableLabel(filter)
}
filter = filterByDisabledLabel(filter)
return filter
}

Loading…
Cancel
Save