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