Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/maccyber/micro-dockerhub-hook
Automatic docker deployment with webhooks
https://github.com/maccyber/micro-dockerhub-hook
automated-builds automated-deployment docker dockerhub dockerhub-webhook hub-docker-com webhook
Last synced: 5 days ago
JSON representation
Automatic docker deployment with webhooks
- Host: GitHub
- URL: https://github.com/maccyber/micro-dockerhub-hook
- Owner: maccyber
- Created: 2017-06-28T23:02:45.000Z (over 7 years ago)
- Default Branch: master
- Last Pushed: 2024-10-27T16:53:39.000Z (about 2 months ago)
- Last Synced: 2024-12-02T09:51:59.299Z (21 days ago)
- Topics: automated-builds, automated-deployment, docker, dockerhub, dockerhub-webhook, hub-docker-com, webhook
- Language: JavaScript
- Homepage:
- Size: 500 KB
- Stars: 32
- Watchers: 4
- Forks: 22
- Open Issues: 31
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
[![Build Status](https://travis-ci.org/maccyber/micro-dockerhub-hook.svg?branch=master)](https://travis-ci.org/maccyber/micro-dockerhub-hook)
[![js-standard-style](https://img.shields.io/badge/code%20style-standard-brightgreen.svg?style=flat)](https://github.com/feross/standard)
[![Coverage Status](https://coveralls.io/repos/github/maccyber/micro-dockerhub-hook/badge.svg)](https://coveralls.io/github/maccyber/micro-dockerhub-hook)
[![Code Climate](https://codeclimate.com/github/maccyber/micro-dockerhub-hook/badges/gpa.svg)](https://codeclimate.com/github/maccyber/micro-dockerhub-hook)# micro-dockerhub-hook
Automatic [docker](https://www.docker.com) deployment with [webhooks](https://docs.docker.com/docker-hub/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.```sh
export TOKEN=$(uuidgen)
echo $TOKEN
```# Installation alternatives
## 1. Run on host
### Install
Nodejs and npm must be installed.
```sh
git clone http://github.com/maccyber/micro-dockerhub-hook
cd micro-dockerhub-hook
npm i
```### Edit config
See [config.js](config.js)
```sh
vim config.js
```### Configure repos and scripts
See [scripts/index.js](scripts/index.js)
```sh
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
```sh
npm start
```## 2. Run with docker-compose
Git clone
```sh
git clone http://github.com/maccyber/micro-dockerhub-hook
```Add secret token in docker.env with
```sh
vim docker.env
```Start with
```sh
docker-compose up -d
```## 3. Run from docker hub
Git clone
```sh
git clone http://github.com/maccyber/micro-dockerhub-hook
```Start with
```sh
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](https://i.imgur.com/DcAAA8G.png)
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
```sh
git clone https://github.com/maccyber/micro-dockerhub-hook/
cd micro-dockerhub-hook
npm i
npm run dev
```Run test with ```curl```
```sh
curl -i -d @test/data/payload.json http://localhost:3000/$TOKEN
```