Skip to content

A docker image/container updater inspired by v2tec/watchtower.

License

Notifications You must be signed in to change notification settings

csy1983/node-watchtower

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

26 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

node-watchtower

A docker image updater inspired by v2tec/watchtower, implemented by Node.js.

Features

  • Periodically check if the image of each running container is updated.
  • You decide whether to apply the updated image or not.
  • Fall back to previous working version if the updated container is failed to start.
  • Load local image from a gzipped tarball file or from a Readable stream.
  • Push local image to the registry server.

Usage

npm install node-watchtower

Code

import Watchtower from 'node-watchtower';

/* Create a watchtower instance */
const watchtower = new Watchtower({
  checkUpdateInterval: 180, /* 3 mins, set to 0 to disable polling update check */
  timeToWaitBeforeHealthyCheck: 10, /* 10 seconds to wait for the updated container to start */
});

/* Add your own private registry server if you want to pull/push images from it */
watchtower.addRegistryAuth('your.own.server:5000', {
  username: 'csy',
  password: 'chardi',
  auth: '',
  email: '',
});

/* Listen to updateFound event */
watchtower.on('updateFound', (containerInfo) => {
  /* Apply update immediately */
  watchtower.applyUpdate(containerInfo).then((updatedContainerInfo) => {
    console.log(`Container ${updatedContainerInfo.Name} is updated`);
  }).catch((error) => {
    console.log(`Container ${containerInfo.Name} update failed.`, error.message);
  });
});

/* Activate the watchtower. This will start checking updates every 3 mins */
watchtower.activate();

/* Load docker image from a file */
watchtower.load(`./test/images/alpine-3.5.tar.gz`).then((repoTags) => {
  console.log(`Image ${repoTags} loaded.`);
}).catch((error) => {
  console.log('Failed to load image.', error.message);
});

/* Push a image with repo:tag to the registry server */
watchtower.push('your.own.server:5000/alpine:3.5').then(() => {
  console.log('Image pushed');
}).catch((error) => {
  console.log('Image push failed.', error.message);
});

/* Inactivate the watchtower */
watchtower.inactivate().then(() => {
  console.log('Watchtower inactivated');
});

Run watchtower container as a web server

Checkout docker-watchtower.

TBD

  • Push image to docker hub is not tested.

About

A docker image/container updater inspired by v2tec/watchtower.

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published