feat: webhook after a successful backup

This commit is contained in:
Claude DIARRA
2022-07-20 13:44:11 +02:00
committed by Pau Rodriguez-Estivill
parent af916da211
commit 839c096199
4 changed files with 22 additions and 2 deletions
+3
View File
@@ -88,6 +88,8 @@ Most variables are the same as in the [official postgres image](https://hub.dock
| POSTGRES_USER_FILE | Alternative to POSTGRES_USER, for usage with docker secrets. |
| SCHEDULE | [Cron-schedule](http://godoc.org/github.com/robfig/cron#hdr-Predefined_schedules) specifying the interval between postgres backups. Defaults to `@daily`. |
| TZ | [POSIX TZ variable](https://www.gnu.org/software/libc/manual/html_node/TZ-Variable.html) specifying the timezone used to evaluate SCHEDULE cron (example "Europe/Paris"). |
| WEBHOOK_EXTRA_URL | Extra arguments for the webhook. |
| WEBHOOK_URL | URL to be called after a successful backup. |
#### Special Environment Variables
@@ -135,3 +137,4 @@ Replace `$BACKUPFILE`, `$VERSION`, `$HOSTNAME`, `$PORT`, `$USERNAME` and `$DBNAM
```sh
docker run --rm --tty --interactive -v $BACKUPFILE:/tmp/backupfile.sql.gz postgres:$VERSION /bin/sh -c "zcat /tmp/backupfile.sql.gz | psql --host=$HOSTNAME --port=$PORT --username=$USERNAME --dbname=$DBNAME -W"
```
+3 -1
View File
@@ -27,7 +27,9 @@ ENV POSTGRES_DB="**None**" \
BACKUP_KEEP_WEEKS=4 \
BACKUP_KEEP_MONTHS=6 \
BACKUP_KEEP_MINS=1440 \
HEALTHCHECK_PORT=8080
HEALTHCHECK_PORT=8080 \
WEBHOOK_URL="**None**" \
WEBHOOK_EXTRA_ARGS=""
COPY backup.sh /backup.sh
+13
View File
@@ -75,12 +75,15 @@ for DB in ${POSTGRES_DBS}; do
WFILE="${BACKUP_DIR}/weekly/${WEEKLY_FILENAME}"
MFILE="${BACKUP_DIR}/monthly/${MONTHY_FILENAME}"
#Create dump
WEBHOOK=true
if [ "${POSTGRES_CLUSTER}" = "TRUE" ]; then
echo "Creating cluster dump of ${DB} database from ${POSTGRES_HOST}..."
pg_dumpall -l "${DB}" ${POSTGRES_EXTRA_OPTS} | gzip > "${FILE}"
if [ $? - ne 0 ]; then WEBHOOK=false; fi
else
echo "Creating dump of ${DB} database from ${POSTGRES_HOST}..."
pg_dump -d "${DB}" -f "${FILE}" ${POSTGRES_EXTRA_OPTS}
if [ $? - ne 0 ]; then WEBHOOK=false; fi
fi
#Copy (hardlink) for each entry
if [ -d "${FILE}" ]; then
@@ -115,3 +118,13 @@ for DB in ${POSTGRES_DBS}; do
done
echo "SQL backup created successfully"
if [ "${WEBHOOK_URL}" != "**None**" -a ${WEBHOOK} ]; then
echo "Execute post-backup webhook call to ${WEBHOOK_URL}"
curl --request POST \
--url ${WEBHOOK_URL} \
--max-time 10 \
--retry 5 \
${WEBHOOK_EXTRA_ARGS}
exit 1
fi
+3 -1
View File
@@ -42,7 +42,9 @@ ENV POSTGRES_DB="**None**" \
BACKUP_KEEP_WEEKS=4 \
BACKUP_KEEP_MONTHS=6 \
BACKUP_KEEP_MINS=1440 \
HEALTHCHECK_PORT=8080
HEALTHCHECK_PORT=8080 \
WEBHOOK_URL="**None**" \
WEBHOOK_EXTRA_ARGS=""
COPY backup.sh /backup.sh