MCPcopy
hub / github.com/nicholas-fedor/watchtower

github.com/nicholas-fedor/watchtower @v1.19.0 sqlite

repository ↗ · DeepWiki ↗ · release v1.19.0 ↗
2,084 symbols 7,294 edges 195 files 1,409 documented · 68%
README

Watchtower

Automate Docker container image updates

CircleCI codecov GoDoc Go Report Card latest version Apache-2.0 License Codacy Badge All Contributors Pulls from DockerHub

Quick Start

With watchtower you can update the running version of your containerized app simply by pushing a new image to the Docker Hub or your own image registry.

Watchtower will pull down your new image, gracefully shut down your existing container and restart it with the same options that were used when it was deployed initially. Run the watchtower container with the following command:

$ docker run --detach \
    --name watchtower \
    --volume /var/run/docker.sock:/var/run/docker.sock \
    nickfedor/watchtower

Watchtower is intended to be used in homelabs, media centers, local dev environments, and similar. We do not recommend using Watchtower in a commercial or production environment. If that is you, you should be looking into using Kubernetes enabled with CI/CD, such as onedr0p's Talos Linux with FluxCD setup here.

⚠️ Note: It is recommended to use the latest version of Docker. You can check your host's Docker version using the CLI command docker version. This version of Watchtower has been tested to support v1.43 and higher; however, don't be surprised if you experience unexpected behavior when attempting to use newer features on older versions of Docker. This version autonegotiates the API version by default. If the DOCKER_API_VERSION variable is explicitly set, Watchtower validates the version and falls back to autonegotiation on failure.

Supported Architectures

Watchtower supports the following architectures for its Docker images:

  • amd64
  • i386
  • armhf
  • arm64v8
  • riscv64

Documentation

The full documentation is available at https://watchtower.nickfedor.com/.

Star History

Star History Chart

Contributors

Thanks goes to these wonderful people (emoji key):

Nicholas Fedor Nicholas Fedor 💻 📖 🚧 👀 Dirk Kok Dirk Kok 💻 nils måsén nils måsén 💻 📖 🚧 👀 Simon Aronsson Simon Aronsson 💻 📖 🚧 👀 James James ⚠️ 🤔 Florian Florian 👀 📖 Brian DeHamer Brian DeHamer 💻 🚧
Ross Cadogan Ross Cadogan 💻 stffabi stffabi 💻 🚧 Austin Austin 📖 David Gardner David Gardner 👀 📖 Tanguy ⧓ Herrmann Tanguy ⧓ Herrmann 💻 Rodrigo Damazio Bovendorp Rodrigo Damazio Bovendorp 💻 📖 Ryan Kuba Ryan Kuba 🚇
cnrmck cnrmck 📖 Harry Walter Harry Walter 💻 Robotex Robotex 📖 Gerald Pape Gerald Pape 📖 fomk fomk 💻 Sven Gottwald Sven Gottwald 🚇 techknowlogick techknowlogick 💻
waja waja 📖 Scott Albertson Scott Albertson 📖 Jason Huddleston Jason Huddleston

Extension points exported contracts — how you extend this code

FilterableContainer (Interface)
FilterableContainer defines an interface for container filtering. [8 implementers]
pkg/types/filterable_container.go
Sorter (Interface)
Sorter provides a common interface for sorting containers. [4 implementers]
pkg/sorter/sorter.go
Operations (Interface)
Operations defines the minimal interface for container operations in Watchtower. [3 implementers]
pkg/container/container.go
HTTPServer (Interface)
HTTPServer defines the interface for an HTTP server. [3 implementers]
pkg/api/api.go
Client (Interface)
Client defines the interface for executing HTTP requests to container registries. This interface abstracts the HTTP cli
pkg/registry/auth/auth.go
ConvertibleNotifier (Interface)
ConvertibleNotifier defines a notifier that generates a shoutrrr URL. Deprecated: This interface is part of the legacy [6 …
pkg/types/convertible_notifier.go
MockContainerUpdate (FuncType)
MockContainerUpdate defines a function to update mock container or image metadata for testing.
pkg/container/container_mock_test.go
ListFunc (FuncType)
ListFunc returns the current status of all watched containers.
pkg/api/containers/containers.go

Core symbols most depended-on inside this repo

Return
called by 637
pkg/types/mocks/Report.go
Return
called by 614
pkg/sorter/mocks/Sorter.go
EXPECT
called by 529
pkg/sorter/mocks/Sorter.go
Name
called by 498
pkg/types/container.go
Add
called by 404
pkg/session/progress.go
ID
called by 376
pkg/types/container.go
EXPECT
called by 347
pkg/types/mocks/Report.go
Error
called by 333
pkg/types/report.go

Shape

Method 978
Function 851
Struct 226
Interface 13
TypeAlias 12
FuncType 4

Languages

Go99%
TypeScript1%

Modules by API surface

pkg/types/mocks/Container.go220 symbols
pkg/container/mocks/Client.go118 symbols
pkg/types/mocks/Notifier.go58 symbols
pkg/types/mocks/ContainerReport.go58 symbols
pkg/types/mocks/Report.go52 symbols
pkg/container/client.go51 symbols
pkg/types/container.go42 symbols
pkg/registry/auth/auth_test.go42 symbols
internal/flags/flags_test.go42 symbols
internal/util/util_test.go38 symbols
pkg/sorter/mocks/container.go37 symbols
pkg/registry/age_test.go36 symbols

Dependencies from manifests, versioned

github.com/Masterminds/semver/v3v3.5.0 · 1×
github.com/Microsoft/go-winiov0.6.2 · 1×
github.com/beorn7/perksv1.0.1 · 1×
github.com/cespare/xxhash/v2v2.3.0 · 1×
github.com/containerd/errdefsv1.0.0 · 1×
github.com/containerd/errdefs/pkgv0.3.0 · 1×
github.com/davecgh/go-spewv1.1.1 · 1×
github.com/distribution/referencev0.6.0 · 1×
github.com/docker/cliv29.6.1+incompatible · 1×
github.com/docker/docker-credential-helpersv0.9.8 · 1×
github.com/docker/go-connectionsv0.7.0 · 1×
github.com/docker/go-unitsv0.5.0 · 1×

For agents

$ claude mcp add watchtower \
  -- python -m otcore.mcp_server <graph>

⬇ download graph artifact