Automatic docker deployment with webhooks.
micro-dockerhub-hook listens to incoming HTTP POST-requests from hub.docker.com and triggers your specified script(s).
- 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 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 $TOKENNodejs and npm must be installed.
git clone http://github.com/maccyber/micro-dockerhub-hook
cd micro-dockerhub-hook
npm iSee config.js
vim config.jsSee scripts/index.js
vim scripts/index.jsUse this format:
'repo/image[:tag]': 'script.sh [parameter1 parameter2]',
tag and parameters are optional.
Remember to chmod +x script.sh
npm startGit clone
git clone http://github.com/maccyber/micro-dockerhub-hookAdd secret token in docker.env with
vim docker.envStart with
docker-compose up -dGit clone
git clone http://github.com/maccyber/micro-dockerhub-hookStart 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-hookGo to https://hub.docker.com/ -> your repo -> Webhooks
Add a webhook like on the following image.
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.
Setup the development environment
git clone https://github.com/maccyber/micro-dockerhub-hook/
cd micro-dockerhub-hook
npm i
npm run devRun test with curl
curl -i -d @test/data/payload.json http://localhost:3000/$TOKEN