From 7c9e1112a3aa1869ca7d0a4f6dfbcc3145555807 Mon Sep 17 00:00:00 2001 From: lcd1232 <8745863+lcd1232@users.noreply.github.com> Date: Wed, 5 Jun 2024 17:24:34 +0000 Subject: [PATCH 1/2] Support backup folder --- Dockerfile | 2 +- src/backup.sh | 12 ++++++------ src/restore.sh | 10 +++++----- 3 files changed, 12 insertions(+), 12 deletions(-) diff --git a/Dockerfile b/Dockerfile index 16915d7..9e8a91b 100644 --- a/Dockerfile +++ b/Dockerfile @@ -3,7 +3,7 @@ FROM alpine:${ALPINE_VERSION} ARG TARGETARCH ADD src/install.sh install.sh -RUN sh install.sh && rm install.sh +RUN sh install.sh && rm install.sh && mkdir /backup ENV POSTGRES_DATABASE '' ENV POSTGRES_HOST '' diff --git a/src/backup.sh b/src/backup.sh index ff1bf15..dc1c1a3 100644 --- a/src/backup.sh +++ b/src/backup.sh @@ -12,20 +12,20 @@ pg_dump --format=custom \ -U $POSTGRES_USER \ -d $POSTGRES_DATABASE \ $PGDUMP_EXTRA_OPTS \ - > db.dump + > backup/db.dump timestamp=$(date +"%Y-%m-%dT%H:%M:%S") s3_uri_base="s3://${S3_BUCKET}/${S3_PREFIX}/${POSTGRES_DATABASE}_${timestamp}.dump" if [ -n "$PASSPHRASE" ]; then echo "Encrypting backup..." - rm -f db.dump.gpg - gpg --symmetric --batch --passphrase "$PASSPHRASE" db.dump - rm db.dump - local_file="db.dump.gpg" + rm -f backup/db.dump.gpg + gpg --symmetric --batch --passphrase "$PASSPHRASE" backup/db.dump + rm backup/db.dump + local_file="backup/db.dump.gpg" s3_uri="${s3_uri_base}.gpg" else - local_file="db.dump" + local_file="backup/db.dump" s3_uri="$s3_uri_base" fi diff --git a/src/restore.sh b/src/restore.sh index 3040146..80e5664 100644 --- a/src/restore.sh +++ b/src/restore.sh @@ -27,18 +27,18 @@ else fi echo "Fetching backup from S3..." -aws $aws_args s3 cp "${s3_uri_base}/${key_suffix}" "db${file_type}" +aws $aws_args s3 cp "${s3_uri_base}/${key_suffix}" "backup/db${file_type}" if [ -n "$PASSPHRASE" ]; then echo "Decrypting backup..." - gpg --decrypt --batch --passphrase "$PASSPHRASE" db.dump.gpg > db.dump - rm db.dump.gpg + gpg --decrypt --batch --passphrase "$PASSPHRASE" backup/db.dump.gpg > backup/db.dump + rm backup/db.dump.gpg fi conn_opts="-h $POSTGRES_HOST -p $POSTGRES_PORT -U $POSTGRES_USER -d $POSTGRES_DATABASE" echo "Restoring from backup..." -pg_restore $conn_opts --clean --if-exists db.dump -rm db.dump +pg_restore $conn_opts --clean --if-exists backup/db.dump +rm backup/db.dump echo "Restore complete." From f128ea41c44f68584212cd4020a60d6c7b1e3b22 Mon Sep 17 00:00:00 2001 From: lcd1232 <8745863+lcd1232@users.noreply.github.com> Date: Wed, 5 Jun 2024 17:27:37 +0000 Subject: [PATCH 2/2] Update README --- README.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/README.md b/README.md index 67e2f99..4d5b001 100644 --- a/README.md +++ b/README.md @@ -26,6 +26,8 @@ services: POSTGRES_DATABASE: dbname POSTGRES_USER: user POSTGRES_PASSWORD: password + volumes: + - /mnt/path/to/backup/folder:/backup # optional ``` - Images are tagged by the major PostgreSQL version supported: `12`, `13`, `14`, `15` or `16`.