mirror of
https://github.com/prodrigestivill/docker-postgres-backup-local.git
synced 2026-05-31 08:37:58 +00:00
feat: webhook after a successful backup
This commit is contained in:
committed by
Pau Rodriguez-Estivill
parent
af916da211
commit
839c096199
@@ -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
@@ -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
|
||||
|
||||
|
||||
@@ -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
@@ -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
|
||||
|
||||
|
||||
Reference in New Issue
Block a user