Skip to content

maccyber/micro-dockerhub-hook

Folders and files

NameName
Last commit message
Last commit date

Latest commit

69368ea · Jan 17, 2020

History

96 Commits
Jun 13, 2019
Jun 13, 2019
Jun 13, 2019
Jun 28, 2017
Mar 15, 2019
Jun 28, 2017
Mar 15, 2019
Jun 28, 2017
Mar 15, 2019
Mar 2, 2019
Jun 28, 2017
Mar 15, 2019
Jun 13, 2019
Sep 16, 2019
Sep 16, 2019
Aug 21, 2018

Repository files navigation

Build Status js-standard-style Coverage Status Code Climate

micro-dockerhub-hook

Automatic docker deployment with webhooks.

micro-dockerhub-hook listens to incoming HTTP POST-requests from hub.docker.com and triggers your specified script(s).

Features

  • Lightweight
  • Pretty simple setup process
  • Can be runned in a docker container
  • Supports updating multiple docker images
  • Scripts can trigger docker or docker-compose
  • Used in production
  • Good logging

Create a token

Create a secret token with openssl, uuidgen or something else. Don't use any slashes since token is going to be used in the URL.

export TOKEN=$(uuidgen)
echo $TOKEN

Installation alternatives

1. Run on host

Install

Nodejs and npm must be installed.

git clone http://github.com/maccyber/micro-dockerhub-hook
cd micro-dockerhub-hook
npm i

Edit config

See config.js

vim config.js

Configure repos and scripts

See scripts/index.js

vim scripts/index.js

Use this format: 'repo/image[:tag]': 'script.sh [parameter1 parameter2]',

tag and parameters are optional.

Remember to chmod +x script.sh

Start micro-dockerhub-hook

npm start

2. Run with docker-compose

Git clone

git clone http://github.com/maccyber/micro-dockerhub-hook

Add secret token in docker.env with

vim docker.env

Start with

docker-compose up -d

3. Run from docker hub

Git clone

git clone http://github.com/maccyber/micro-dockerhub-hook

Start with

docker run -d \
  -p 3000:3000 \
  -e TOKEN=${TOKEN} \
  -v ${PWD}/scripts:/src/scripts \
  -v /var/run/docker.sock:/var/run/docker.sock \
  --name micro-dockerhub-hook \
  maccyber/micro-dockerhub-hook

Configuration on docker hub

Go to https://hub.docker.com/ -> your repo -> Webhooks

Add a webhook like on the following image.

alt tag

Replace example.com with the domain of your server or it's ip address.

Replace abc123 with your secret token.

docker-hook listens to port 3000 by default.

Testing on local machine

Setup the development environment

git clone https://github.com/maccyber/micro-dockerhub-hook/
cd micro-dockerhub-hook
npm i
npm run dev

Run test with curl

curl -i -d @test/data/payload.json http://localhost:3000/$TOKEN