Service to backup a PostgreSQL database to a Google Storage Bucket
1.6K
Service to periodically backup a PostgreSQL database to a Google Storage Bucket
Create a GCP service account and create a key for that service account. Next, assign the service account the role Storage Admin w.r.t. the Google Cloud Storage bucket.
Create a PostgreSQL password file, matching your database's configuration AND environment variables mentioned later on.
NOTE: Make sure that, on Unix systems, the permissions on both before mentioned credential files are set to
0400. For example, to achieve this run:chmod 0400 gcp-credentials.json .pgpass
When running a container of this image you MUST mount both before mentioned credentials under /run/secrets/ inside the container.
That is, the following files MUST be available inside the container:
/run/secrets/gcp-credentials.json/run/secrets/.pgpassThis can either be achieved using Docker Volumes or Docker Secrets.
Also, when running a container of this image you MUST specify the environment variables GCP_PROJECT, GCP_BUCKET, POSTGRES_DATABASE.
Other environment variables are available, but are optional.
All available environment variables are:
| Environment Variable | Default Value | Required | Description |
|---|---|---|---|
| GCP_BUCKET | ✔ | The Google Cloud Storage Bucket name | |
| GCP_PROJECT | ✔ | The Google Cloud Project ID of the project the Google Cloud Storage Bucket is part of | |
| POSTGRES_GS_BACKUP_INTERVAL | 0 7,19 * * * | How often should the backup be performed | |
| POSTGRES_DATABASE | ✔ | The PostgreSQL database. Should match the .pgpass file mentioned above | |
| POSTGRES_HOST | 172.18.0.1 | The PostgreSQL hostname. Should match the .pgpass file mentioned above | |
| POSTGRES_PORT | 5432 | The PostgreSQL port. Should match the .pgpass file mentioned above | |
| POSTGRES_USER | postgres | The PostgreSQL username. Should match the .pgpass file mentioned above |
After a backup has been performed a new file is created in the specified Google Storage Bucket called ${POSTGRES_DATABASE}.gz.
NOTE: Running a container of this image, enables Object Versioning on the specified Google Storage Bucket.
This allows multiple versions of a file, with the same name, to exist in that bucket.
TIP: This can be used in conjunction with Google Storage Object Lifecycle Management.
Run build.sh to build an image of the current codebase state with tag latest.
VERSION environment variable to the version that needs to be released.COMMIT environment variable to the hash of the Git commit that needs to be released. It defaults to the latest commit.Example release statement:
VERSION=1.3.42 ./release.sh
Content type
Image
Digest
Size
172 MB
Last updated
about 6 years ago
docker pull xsystems/postgres-gs-backup