diff --git a/Dockerfile b/Dockerfile index f06e4fa..16915d7 100644 --- a/Dockerfile +++ b/Dockerfile @@ -23,6 +23,7 @@ ENV PASSPHRASE '' ENV BACKUP_KEEP_DAYS '' ADD src/run.sh run.sh +ADD src/env.sh env.sh ADD src/backup.sh backup.sh ADD src/restore.sh restore.sh diff --git a/src/backup.sh b/src/backup.sh index 70040c6..0dd786c 100644 --- a/src/backup.sh +++ b/src/backup.sh @@ -3,51 +3,7 @@ set -eu set -o pipefail -if [ -z "$S3_BUCKET" ]; then - echo "You need to set the S3_BUCKET environment variable." - exit 1 -fi - -if [ -z "$POSTGRES_DATABASE" ]; then - echo "You need to set the POSTGRES_DATABASE environment variable." - exit 1 -fi - -if [ -z "$POSTGRES_HOST" ]; then - if [ -n "$POSTGRES_PORT_5432_TCP_ADDR" ]; then - POSTGRES_HOST=$POSTGRES_PORT_5432_TCP_ADDR - POSTGRES_PORT=$POSTGRES_PORT_5432_TCP_PORT - else - echo "You need to set the POSTGRES_HOST environment variable." - exit 1 - fi -fi - -if [ -z "$POSTGRES_USER" ]; then - echo "You need to set the POSTGRES_USER environment variable." - exit 1 -fi - -if [ -z "$POSTGRES_PASSWORD" ]; then - echo "You need to set the POSTGRES_PASSWORD environment variable." - exit 1 -fi - -if [ -z "$S3_ENDPOINT" ]; then - aws_args="" -else - aws_args="--endpoint-url $S3_ENDPOINT" -fi - - -if [ -n "$S3_ACCESS_KEY_ID" ]; then - export AWS_ACCESS_KEY_ID=$S3_ACCESS_KEY_ID -fi -if [ -n "$S3_SECRET_ACCESS_KEY" ]; then - export AWS_SECRET_ACCESS_KEY=$S3_SECRET_ACCESS_KEY -fi -export AWS_DEFAULT_REGION=$S3_REGION -export PGPASSWORD=$POSTGRES_PASSWORD +source ./env.sh echo "Creating backup of $POSTGRES_DATABASE database..." pg_dump --format=custom \ diff --git a/src/env.sh b/src/env.sh new file mode 100644 index 0000000..af495e4 --- /dev/null +++ b/src/env.sh @@ -0,0 +1,46 @@ +if [ -z "$S3_BUCKET" ]; then + echo "You need to set the S3_BUCKET environment variable." + exit 1 +fi + +if [ -z "$POSTGRES_DATABASE" ]; then + echo "You need to set the POSTGRES_DATABASE environment variable." + exit 1 +fi + +if [ -z "$POSTGRES_HOST" ]; then + # https://docs.docker.com/network/links/#environment-variables + if [ -n "$POSTGRES_PORT_5432_TCP_ADDR" ]; then + POSTGRES_HOST=$POSTGRES_PORT_5432_TCP_ADDR + POSTGRES_PORT=$POSTGRES_PORT_5432_TCP_PORT + else + echo "You need to set the POSTGRES_HOST environment variable." + exit 1 + fi +fi + +if [ -z "$POSTGRES_USER" ]; then + echo "You need to set the POSTGRES_USER environment variable." + exit 1 +fi + +if [ -z "$POSTGRES_PASSWORD" ]; then + echo "You need to set the POSTGRES_PASSWORD environment variable." + exit 1 +fi + +if [ -z "$S3_ENDPOINT" ]; then + aws_args="" +else + aws_args="--endpoint-url $S3_ENDPOINT" +fi + + +if [ -n "$S3_ACCESS_KEY_ID" ]; then + export AWS_ACCESS_KEY_ID=$S3_ACCESS_KEY_ID +fi +if [ -n "$S3_SECRET_ACCESS_KEY" ]; then + export AWS_SECRET_ACCESS_KEY=$S3_SECRET_ACCESS_KEY +fi +export AWS_DEFAULT_REGION=$S3_REGION +export PGPASSWORD=$POSTGRES_PASSWORD diff --git a/src/restore.sh b/src/restore.sh index 6340645..3040146 100644 --- a/src/restore.sh +++ b/src/restore.sh @@ -3,52 +3,7 @@ set -u # `-e` omitted intentionally, but i can't remember why exactly :'( set -o pipefail -if [ -z "$S3_BUCKET" ]; then - echo "You need to set the S3_BUCKET environment variable." - exit 1 -fi - -if [ -z "$POSTGRES_DATABASE" ]; then - echo "You need to set the POSTGRES_DATABASE environment variable." - exit 1 -fi - -if [ -z "$POSTGRES_HOST" ]; then - # https://docs.docker.com/network/links/#environment-variables - if [ -n "$POSTGRES_PORT_5432_TCP_ADDR" ]; then - POSTGRES_HOST=$POSTGRES_PORT_5432_TCP_ADDR - POSTGRES_PORT=$POSTGRES_PORT_5432_TCP_PORT - else - echo "You need to set the POSTGRES_HOST environment variable." - exit 1 - fi -fi - -if [ -z "$POSTGRES_USER" ]; then - echo "You need to set the POSTGRES_USER environment variable." - exit 1 -fi - -if [ -z "$POSTGRES_PASSWORD" ]; then - echo "You need to set the POSTGRES_PASSWORD environment variable." - exit 1 -fi - -if [ -z "$S3_ENDPOINT" ]; then - aws_args="" -else - aws_args="--endpoint-url $S3_ENDPOINT" -fi - - -if [ -n "$S3_ACCESS_KEY_ID" ]; then - export AWS_ACCESS_KEY_ID=$S3_ACCESS_KEY_ID -fi -if [ -n "$S3_SECRET_ACCESS_KEY" ]; then - export AWS_SECRET_ACCESS_KEY=$S3_SECRET_ACCESS_KEY -fi -export AWS_DEFAULT_REGION=$S3_REGION -export PGPASSWORD=$POSTGRES_PASSWORD +source ./env.sh s3_uri_base="s3://${S3_BUCKET}/${S3_PREFIX}"