config.json.example and Readme.md.
- JavaScript 99%
- Dockerfile 1%
| .github | ||
| cache | ||
| src | ||
| .dockerignore | ||
| .editorconfig | ||
| .eslintrc.json | ||
| .gitignore | ||
| config.json.example | ||
| docker-compose.yml | ||
| Dockerfile | ||
| LICENSE | ||
| package-lock.json | ||
| package.json | ||
| Readme.md | ||
| Synology Readme.md | ||
Preamble (mid's fork)
This is a fork of Schlabbi/docker-notify, which seems stale, where the configuration file schema has been modified to allow more than one target images (note the s) in the notifyServices objects. You can set the images property to a string containing the image name, like before, or to an array of strings if there are more than one that should share the same hooks.
See the examples below or here.
The source is available on my gitea instance and the docker image is available on dockerhub.
Docker-Notify
Docker-Notify can send you a mail or call a webhook when a Docker image gets updated.
If you are trying to set docker-notify up on a Synology, here is a guide for that.
Environment Variables
$CONFIG_DIRdefines the directory where the config is stored
Notification Destinations
The following notification destinations are supported:
| Type | Description |
|---|---|
| smtpServer | |
| webHooks | Webhook, the $msg variable can be used to insert the docker-notify update message |
Setup
- Copy the
config.json.examplefile to$CONFIG_DIR/config.json - Fill out the
config.jsonfile:- Read the self describing schema in src/schema.json
- If the tag is left out (example: user/repoName), you will receive a mail about any updates made (e.g. nightly builds)
- If the repository is an official repository, you can leave out the user and just add repoName:tag as image.
- Build the Docker container for
docker-notify. - Set the variable
$CONFIG_DIRin the docker-compose file. - Run the container with
docker-compose up -d - If you edit settings in the config, you need to execute
docker-compose upagain.
Example
Consider the following scenario:
You have a server with 2 software services.
One is a dockerized webserver and the other one is a dockerized nextcloud image with some customizations, so your docker-compose.yml is looking like this:
version: '3'
services:
webserver:
image: apache2
restart: always
nextcloud:
image: customUser/nextcloud:latest
restart: always
Now you want to be notified if you may update your apache2-server and you want to be notified if you must call your ci-pipeline to rebuild your custom nextcloud-docker-image.
So, now your docker-compose.yml file is looking like this:
version: '3'
services:
webserver:
image: apache2
restart: always
nextcloud:
image: customUser/nextcloud:latest
restart: always
docker-notify:
image: midmid/docker-notify
restart: always
volumes:
- /home/someUser/notify/cache:/usr/src/app/cache
- /home/someUser/notify/config.json:/usr/src/app/config.json
The config.json looks like the following:
{
"notifyServices":[
{
"images": [ "nextcloud:fpm", "gitea/gitea:latest" ],
"actions": [
{
"type": "mailHook",
"instance": "generalMail",
"recipient": "info@example.org"
},
{
"type": "webHook",
"instance": "gitlabHook"
}
]
},
{
"images": "httpd",
"actions": [
{
"type": "mailHook",
"instance": "generalMail",
"recipient": "info@example.org"
}
]
}
],
"smtpServer": {
"generalMail": {
"host": "mail.example.org",
"port": 25,
"username": "docker-notify@example.org",
"password": "PASSWORD",
"sendername": "Docker-Notify",
"senderadress": "docker-notify@example.org"
}
},
"webHooks":{
"gitlabHook": {
"reqUrl": "https://ci.example.org",
"httpMethod": "POST",
// This one is optional and will default to null.
"httpBody": {
"foo": [1, 2, 3]
}
},
"slackHook": {
"reqUrl": "https://hooks.slack.com/services/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w",
"httpMethod": "POST",
"httpHeaders": {"Content-type": "application/json"},
"httpBody": {
"text": "$msg"
}
}
}
}