mirror of
https://github.com/containrrr/watchtower.git
synced 2025-09-21 21:30:48 +02:00
Allow watchtower to update rebooting containers (#651)
Co-authored-by: nils måsén <nils@piksel.se> Co-authored-by: Simon Aronsson <simme@arcticbit.se>
This commit is contained in:
parent
64d48b70c2
commit
2842b97df3
6 changed files with 362 additions and 19 deletions
|
@ -3,11 +3,12 @@ package container
|
|||
import (
|
||||
"bytes"
|
||||
"fmt"
|
||||
"github.com/containrrr/watchtower/pkg/registry"
|
||||
"io/ioutil"
|
||||
"strings"
|
||||
"time"
|
||||
|
||||
"github.com/containrrr/watchtower/pkg/registry"
|
||||
|
||||
t "github.com/containrrr/watchtower/pkg/types"
|
||||
"github.com/docker/docker/api/types"
|
||||
"github.com/docker/docker/api/types/container"
|
||||
|
@ -39,7 +40,7 @@ type Client interface {
|
|||
// * DOCKER_HOST the docker-engine host to send api requests to
|
||||
// * DOCKER_TLS_VERIFY whether to verify tls certificates
|
||||
// * DOCKER_API_VERSION the minimum docker api version to work with
|
||||
func NewClient(pullImages bool, includeStopped bool, reviveStopped bool, removeVolumes bool) Client {
|
||||
func NewClient(pullImages bool, includeStopped bool, reviveStopped bool, removeVolumes bool, includeRestarting bool) Client {
|
||||
cli, err := sdkClient.NewClientWithOpts(sdkClient.FromEnv)
|
||||
|
||||
if err != nil {
|
||||
|
@ -47,28 +48,34 @@ func NewClient(pullImages bool, includeStopped bool, reviveStopped bool, removeV
|
|||
}
|
||||
|
||||
return dockerClient{
|
||||
api: cli,
|
||||
pullImages: pullImages,
|
||||
removeVolumes: removeVolumes,
|
||||
includeStopped: includeStopped,
|
||||
reviveStopped: reviveStopped,
|
||||
api: cli,
|
||||
pullImages: pullImages,
|
||||
removeVolumes: removeVolumes,
|
||||
includeStopped: includeStopped,
|
||||
reviveStopped: reviveStopped,
|
||||
includeRestarting: includeRestarting,
|
||||
}
|
||||
}
|
||||
|
||||
type dockerClient struct {
|
||||
api sdkClient.CommonAPIClient
|
||||
pullImages bool
|
||||
removeVolumes bool
|
||||
includeStopped bool
|
||||
reviveStopped bool
|
||||
api sdkClient.CommonAPIClient
|
||||
pullImages bool
|
||||
removeVolumes bool
|
||||
includeStopped bool
|
||||
reviveStopped bool
|
||||
includeRestarting bool
|
||||
}
|
||||
|
||||
func (client dockerClient) ListContainers(fn t.Filter) ([]Container, error) {
|
||||
cs := []Container{}
|
||||
bg := context.Background()
|
||||
|
||||
if client.includeStopped {
|
||||
log.Debug("Retrieving containers including stopped and exited")
|
||||
if client.includeStopped && client.includeRestarting {
|
||||
log.Debug("Retrieving running, stopped, restarting and exited containers")
|
||||
} else if client.includeStopped {
|
||||
log.Debug("Retrieving running, stopped and exited containers")
|
||||
} else if client.includeRestarting {
|
||||
log.Debug("Retrieving running and restarting containers")
|
||||
} else {
|
||||
log.Debug("Retrieving running containers")
|
||||
}
|
||||
|
@ -108,6 +115,10 @@ func (client dockerClient) createListFilter() filters.Args {
|
|||
filterArgs.Add("status", "exited")
|
||||
}
|
||||
|
||||
if client.includeRestarting {
|
||||
filterArgs.Add("status", "restarting")
|
||||
}
|
||||
|
||||
return filterArgs
|
||||
}
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue