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

Fixes #169
pull/173/head
Fabrizio Steiner 7 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. 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. 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 ```docker

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

Loading…
Cancel
Save