From 0ec036071e6f9c26266c9dd61d6971b1716672c7 Mon Sep 17 00:00:00 2001 From: Pau RE Date: Wed, 4 Sep 2024 11:26:45 +0200 Subject: [PATCH] Add support to launch backups on startup --- README.md | 2 ++ alpine.Dockerfile | 1 + debian.Dockerfile | 1 + init.sh | 7 +++++++ 4 files changed, 11 insertions(+) diff --git a/README.md b/README.md index ac415e5..f47c24a 100644 --- a/README.md +++ b/README.md @@ -51,6 +51,7 @@ services: # - POSTGRES_PASSWORD_FILE=/run/secrets/db_password <-- alternative for POSTGRES_PASSWORD (to use with docker secrets) - POSTGRES_EXTRA_OPTS=-Z1 --schema=public --blobs - SCHEDULE=@daily + - BACKUP_ON_START=TRUE - BACKUP_KEEP_DAYS=7 - BACKUP_KEEP_WEEKS=4 - BACKUP_KEEP_MONTHS=6 @@ -75,6 +76,7 @@ Most variables are the same as in the [official postgres image](https://hub.dock |--|--| | BACKUP_DIR | Directory to save the backup at. Defaults to `/backups`. | | BACKUP_SUFFIX | Filename suffix to save the backup. Defaults to `.sql.gz`. | +| BACKUP_ON_START | If set to `TRUE` performs an backup on each container start or restart. Defaults to `FALSE`. | | BACKUP_KEEP_DAYS | Number of daily backups to keep before removal. Defaults to `7`. | | BACKUP_KEEP_WEEKS | Number of weekly backups to keep before removal. Defaults to `4`. | | BACKUP_KEEP_MONTHS | Number of monthly backups to keep before removal. Defaults to `6`. | diff --git a/alpine.Dockerfile b/alpine.Dockerfile index 9ca0d1b..e345ec4 100644 --- a/alpine.Dockerfile +++ b/alpine.Dockerfile @@ -21,6 +21,7 @@ ENV POSTGRES_DB="**None**" \ POSTGRES_EXTRA_OPTS="-Z1" \ POSTGRES_CLUSTER="FALSE" \ SCHEDULE="@daily" \ + BACKUP_ON_START="FALSE" \ BACKUP_DIR="/backups" \ BACKUP_SUFFIX=".sql.gz" \ BACKUP_LATEST_TYPE="symlink" \ diff --git a/debian.Dockerfile b/debian.Dockerfile index 40f19bf..0019334 100644 --- a/debian.Dockerfile +++ b/debian.Dockerfile @@ -35,6 +35,7 @@ ENV POSTGRES_DB="**None**" \ POSTGRES_EXTRA_OPTS="-Z1" \ POSTGRES_CLUSTER="FALSE" \ SCHEDULE="@daily" \ + BACKUP_ON_START="FALSE" \ BACKUP_DIR="/backups" \ BACKUP_SUFFIX=".sql.gz" \ BACKUP_LATEST_TYPE="symlink" \ diff --git a/init.sh b/init.sh index 8674bff..055973f 100755 --- a/init.sh +++ b/init.sh @@ -4,4 +4,11 @@ set -Eeo pipefail # Prevalidate configuration (don't source) /env.sh +# Initial background backup +if [ "${BACKUP_ON_START}" = "TRUE" ]; then + echo "Launching an startup backup as a background job..." + /backup.sh & +fi + +echo "Starting go-cron ($SCHEDULE)..." exec /usr/local/bin/go-cron -s "$SCHEDULE" -p "$HEALTHCHECK_PORT" -- /backup.sh