Sign inSign up

brabidou/postgres-backup-s3

By brabidou

•Updated over 1 year ago

Backup PostgresSQL to S3 (supports periodic backups)

Image
0

1.1K

brabidou/postgres-backup-s3 repository overview

⁠postgres-backup-s3

Build Docker pulls

Backup PostgresSQL (up to Postgres 17) to S3 (supports periodic backups)

Copied the from @schickling⁠ postgres-backup-s3⁠ project. Broken into an individual project for ease of updating and deployment.

Github Project⁠

Docker Project⁠

⁠Usage

Docker:

docker run -e S3_ACCESS_KEY_ID=key -e S3_SECRET_ACCESS_KEY=secret -e S3_BUCKET=my-bucket -e S3_PREFIX=backup -e POSTGRES_DATABASE=dbname -e POSTGRES_USER=user -e POSTGRES_PASSWORD=password -e POSTGRES_HOST=localhost schickling/postgres-backup-s3

Docker Compose:

postgres:
  image: postgres
  environment:
    POSTGRES_USER: user
    POSTGRES_PASSWORD: password

pgbackups3:
  image: schickling/postgres-backup-s3
  depends_on:
    - postgres
  links:
    - postgres
  environment:
    SCHEDULE: '@daily'
    S3_REGION: region
    S3_ACCESS_KEY_ID: key
    S3_SECRET_ACCESS_KEY: secret
    S3_BUCKET: my-bucket
    S3_PREFIX: backup
    POSTGRES_BACKUP_ALL: "false"
    POSTGRES_HOST: host
    POSTGRES_DATABASE: dbname
    POSTGRES_USER: user
    POSTGRES_PASSWORD: password
    POSTGRES_EXTRA_OPTS: '--schema=public --blobs'
⁠Automatic Periodic Backups

You can additionally set the SCHEDULE environment variable like -e SCHEDULE="@daily" to run the backup automatically.

More information about the scheduling can be found here⁠.

⁠Backup File Name / Path

By default, if POSTGRES_BACKUP_ALL is true, the dump file will be put at <S3_PREFIX=''>/all_<timestamp>.sql.gz. When using POSTGRES_DATABASE, each database listed will be backed up to the object path <S3_PREFIX=''>/<database>_<timestamp>.sql.gz.

If you wish to make these filenames static, you can use the S3_FILE_NAME variable, which will change these formats to <S3_PREFIX=''>/<S3_FILE_NAME>.sql.gz or <S3_PREFIX=''>/<S3_FILE_NAME>_<database>.sql.gz accordingly.

⁠Backup All Databases

You can backup all available databases by setting POSTGRES_BACKUP_ALL="true".

Single archive with the name all_<timestamp>.sql.gz will be uploaded to S3

⁠Endpoints for S3

An Endpoint is the URL of the entry point for an AWS web service or S3 Compitable Storage Provider.

You can specify an alternate endpoint by setting S3_ENDPOINT environment variable like protocol://endpoint

Note: S3 Compitable Storage Provider requires S3_ENDPOINT environment variable

⁠Encryption

You can additionally set the ENCRYPTION_PASSWORD environment variable like -e ENCRYPTION_PASSWORD="superstrongpassword" to encrypt the backup. It can be decrypted using openssl aes-256-cbc -d -in backup.sql.gz.enc -out backup.sql.gz.

Tag summary

Content type

Image

Digest

sha256:5e7017466…

Size

48 MB

Last updated

over 1 year ago

docker pull brabidou/postgres-backup-s3