Docker images for postgres extended with management bash scripts.
1#!/usr/bin/env bash
2
3
4### Create a database backup.
5###
6### Usage:
7### $ docker-compose -f <environment>.yml (exec |run --rm) postgres backup
8
9
10set -o errexit
11set -o pipefail
12set -o nounset
13
14
15working_dir="$(dirname ${0})"
16source "${working_dir}/_sourced/constants.sh"
17source "${working_dir}/_sourced/messages.sh"
18
19
20message_welcome "Backing up the '${POSTGRES_DB}' database..."
21
22
23if [[ "${POSTGRES_USER}" == "postgres" ]]; then
24 message_error "Backing up as 'postgres' user is not supported. Assign 'POSTGRES_USER' env with another one and try again."
25 exit 1
26fi
27
28export PGHOST="${POSTGRES_HOST}"
29export PGPORT="${POSTGRES_PORT}"
30export PGUSER="${POSTGRES_USER}"
31export PGPASSWORD="${POSTGRES_PASSWORD}"
32export PGDATABASE="${POSTGRES_DB}"
33
34backup_filename="${BACKUP_FILE_PREFIX}_$(date +'%Y_%m_%dT%H_%M_%S').sql.gz"
35pg_dump | gzip > "${BACKUP_DIR_PATH}/${backup_filename}"
36
37
38message_success "'${POSTGRES_DB}' database backup '${backup_filename}' has been created and placed in '${BACKUP_DIR_PATH}'."