From 3a5b810d37f2e877ad3a4e3d1fec285b525129c7 Mon Sep 17 00:00:00 2001 From: Jonas Kaninda Date: Sat, 10 Aug 2024 09:39:50 +0200 Subject: [PATCH] Add Docke Entrypoint --- Makefile | 16 +- README.md | 20 +- cmd/root.go | 1 - docker/Dockerfile | 2 +- docs/how-tos/backup-to-s3.md | 10 +- docs/how-tos/backup-to-ssh.md | 5 +- docs/how-tos/backup.md | 18 +- docs/how-tos/deploy-on-kubernetes.md | 228 +++++++++++++++++++ docs/how-tos/encrypt-backup.md | 5 +- docs/how-tos/restore-from-s3.md | 7 +- docs/how-tos/restore-from-ssh.md | 7 +- docs/how-tos/restore.md | 7 +- docs/index.md | 13 +- examples/docker-compose.s3.yaml | 5 +- examples/docker-compose.scheduled.local.yaml | 5 +- examples/docker-compose.scheduled.s3.yaml | 5 +- examples/docker-compose.yaml | 5 +- 17 files changed, 273 insertions(+), 86 deletions(-) create mode 100644 docs/how-tos/deploy-on-kubernetes.md diff --git a/Makefile b/Makefile index c749911..c84016c 100644 --- a/Makefile +++ b/Makefile @@ -18,32 +18,32 @@ docker-build: docker build -f docker/Dockerfile -t ${IMAGE_NAME}:latest . docker-run: docker-build - docker run --rm --network web --name pg-bkup -v "./backup:/backup" -e "DB_HOST=${DB_HOST}" -e "DB_NAME=${DB_NAME}" -e "DB_USERNAME=${DB_USERNAME}" -e "DB_PASSWORD=${DB_PASSWORD}" -e "GPG_PASSPHRASE=${GPG_PASSPHRASE}" ${IMAGE_NAME} bkup backup --prune --keep-last 2 + docker run --rm --network web --name pg-bkup -v "./backup:/backup" -e "DB_HOST=${DB_HOST}" -e "DB_NAME=${DB_NAME}" -e "DB_USERNAME=${DB_USERNAME}" -e "DB_PASSWORD=${DB_PASSWORD}" -e "GPG_PASSPHRASE=${GPG_PASSPHRASE}" ${IMAGE_NAME} backup --prune --keep-last 2 docker-restore: docker-build - docker run --rm --network web --user 1000:1000 --name pg-bkup -v "./backup:/backup" -e "DB_HOST=${DB_HOST}" -e "DB_NAME=${DB_NAME}" -e "DB_USERNAME=${DB_USERNAME}" -e "DB_PASSWORD=${DB_PASSWORD}" -e "GPG_PASSPHRASE=${GPG_PASSPHRASE}" ${IMAGE_NAME} bkup restore -f ${FILE_NAME} + docker run --rm --network web --user 1000:1000 --name pg-bkup -v "./backup:/backup" -e "DB_HOST=${DB_HOST}" -e "DB_NAME=${DB_NAME}" -e "DB_USERNAME=${DB_USERNAME}" -e "DB_PASSWORD=${DB_PASSWORD}" -e "GPG_PASSPHRASE=${GPG_PASSPHRASE}" ${IMAGE_NAME} restore -f ${FILE_NAME} docker-run-scheduled: docker-build - docker run --rm --network web --name pg-bkup -v "./backup:/backup" -e "DB_HOST=${DB_HOST}" -e "DB_NAME=${DB_NAME}" -e "DB_USERNAME=${DB_USERNAME}" -e "DB_PASSWORD=${DB_PASSWORD}" -e "GPG_PASSPHRASE=${GPG_PASSPHRASE}" ${IMAGE_NAME} bkup backup --mode scheduled --period "* * * * *" + docker run --rm --network web --name pg-bkup -v "./backup:/backup" -e "DB_HOST=${DB_HOST}" -e "DB_NAME=${DB_NAME}" -e "DB_USERNAME=${DB_USERNAME}" -e "DB_PASSWORD=${DB_PASSWORD}" -e "GPG_PASSPHRASE=${GPG_PASSPHRASE}" ${IMAGE_NAME} backup --mode scheduled --period "* * * * *" docker-run-scheduled-s3: docker-build docker run --rm --network web --name pg-bkup -v "./backup:/backup" -e "DB_HOST=${DB_HOST}" -e "DB_NAME=${DB_NAME}" -e "DB_USERNAME=${DB_USERNAME}" -e "DB_PASSWORD=${DB_PASSWORD}" -e "ACCESS_KEY=${ACCESS_KEY}" -e "SECRET_KEY=${SECRET_KEY}" -e "BUCKET_NAME=${BUCKET_NAME}" -e "S3_ENDPOINT=${AWS_S3_ENDPOINT}" -e "GPG_PASSPHRASE=${GPG_PASSPHRASE}" ${IMAGE_NAME} backup --storage s3 --mode scheduled --path /custom-path --period "* * * * *" docker-run-s3: docker-build - docker run --rm --network web --name pg-bkup -e "DB_HOST=${DB_HOST}" -e "DB_NAME=${DB_NAME}" -e "DB_USERNAME=${DB_USERNAME}" -e "DB_PASSWORD=${DB_PASSWORD}" -e "ACCESS_KEY=${ACCESS_KEY}" -e "SECRET_KEY=${SECRET_KEY}" -e "AWS_S3_BUCKET_NAME=${AWS_S3_BUCKET_NAME}" -e "S3_ENDPOINT=${AWS_S3_ENDPOINT}" -e "GPG_PASSPHRASE=${GPG_PASSPHRASE}" ${IMAGE_NAME} bkup backup --storage s3 --mode scheduled --path custom-path --period "* * * * *" + docker run --rm --network web --name pg-bkup -e "DB_HOST=${DB_HOST}" -e "DB_NAME=${DB_NAME}" -e "DB_USERNAME=${DB_USERNAME}" -e "DB_PASSWORD=${DB_PASSWORD}" -e "ACCESS_KEY=${ACCESS_KEY}" -e "SECRET_KEY=${SECRET_KEY}" -e "AWS_S3_BUCKET_NAME=${AWS_S3_BUCKET_NAME}" -e "S3_ENDPOINT=${AWS_S3_ENDPOINT}" -e "GPG_PASSPHRASE=${GPG_PASSPHRASE}" ${IMAGE_NAME} backup --storage s3 --mode scheduled --path custom-path --period "* * * * *" docker-restore-s3: docker-build - docker run --rm --network web --privileged --device /dev/fuse --name pg-bkup -e "DB_HOST=${DB_HOST}" -e "DB_NAME=${DB_NAME}" -e "DB_USERNAME=${DB_USERNAME}" -e "DB_PASSWORD=${DB_PASSWORD}" -e "ACCESS_KEY=${ACCESS_KEY}" -e "SECRET_KEY=${SECRET_KEY}" -e "BUCKET_NAME=${AWS_S3_BUCKET_NAME}" -e "S3_ENDPOINT=${S3_ENDPOINT}" -e "AWS_REGION=eu2" -e "GPG_PASSPHRASE=${GPG_PASSPHRASE}" ${IMAGE_NAME} bkup restore --storage s3 -f ${FILE_NAME} #--path /custom-path + docker run --rm --network web --privileged --device /dev/fuse --name pg-bkup -e "DB_HOST=${DB_HOST}" -e "DB_NAME=${DB_NAME}" -e "DB_USERNAME=${DB_USERNAME}" -e "DB_PASSWORD=${DB_PASSWORD}" -e "ACCESS_KEY=${ACCESS_KEY}" -e "SECRET_KEY=${SECRET_KEY}" -e "BUCKET_NAME=${AWS_S3_BUCKET_NAME}" -e "S3_ENDPOINT=${S3_ENDPOINT}" -e "AWS_REGION=eu2" -e "GPG_PASSPHRASE=${GPG_PASSPHRASE}" ${IMAGE_NAME} restore --storage s3 -f ${FILE_NAME} #--path /custom-path docker-run-ssh: docker-build - docker run --rm --network web --name pg-bkup -e "DB_HOST=${DB_HOST}" -e "DB_NAME=${DB_NAME}" -e "DB_USERNAME=${DB_USERNAME}" -e "DB_PASSWORD=${DB_PASSWORD}" -e "SSH_USER=${SSH_USER}" -e "SSH_HOST_NAME=${SSH_HOST_NAME}" -e "SSH_REMOTE_PATH=${SSH_REMOTE_PATH}" -e "SSH_PASSWORD=${SSH_PASSWORD}" -e "SSH_PORT=${SSH_PORT}" -e "SSH_IDENTIFY_FILE=${SSH_IDENTIFY_FILE}" -e "GPG_PASSPHRASE=${GPG_PASSPHRASE}" ${IMAGE_NAME} bkup backup --storage ssh + docker run --rm --network web --name pg-bkup -e "DB_HOST=${DB_HOST}" -e "DB_NAME=${DB_NAME}" -e "DB_USERNAME=${DB_USERNAME}" -e "DB_PASSWORD=${DB_PASSWORD}" -e "SSH_USER=${SSH_USER}" -e "SSH_HOST_NAME=${SSH_HOST_NAME}" -e "SSH_REMOTE_PATH=${SSH_REMOTE_PATH}" -e "SSH_PASSWORD=${SSH_PASSWORD}" -e "SSH_PORT=${SSH_PORT}" -e "SSH_IDENTIFY_FILE=${SSH_IDENTIFY_FILE}" -e "GPG_PASSPHRASE=${GPG_PASSPHRASE}" ${IMAGE_NAME} backup --storage ssh docker-run-scheduled-ssh: docker-build - docker run --rm --network web --name pg-bkup -e "DB_HOST=${DB_HOST}" -e "DB_NAME=${DB_NAME}" -e "DB_USERNAME=${DB_USERNAME}" -e "DB_PASSWORD=${DB_PASSWORD}" -e "SSH_USER=${SSH_USER}" -e "SSH_HOST_NAME=${SSH_HOST_NAME}" -e "SSH_REMOTE_PATH=${SSH_REMOTE_PATH}" -e "SSH_PASSWORD=${SSH_PASSWORD}" -e "SSH_PORT=${SSH_PORT}" -e "SSH_IDENTIFY_FILE=${SSH_IDENTIFY_FILE}" -e "GPG_PASSPHRASE=${GPG_PASSPHRASE}" ${IMAGE_NAME} bkup backup --storage ssh --mode scheduled --period "* * * * *" + docker run --rm --network web --name pg-bkup -e "DB_HOST=${DB_HOST}" -e "DB_NAME=${DB_NAME}" -e "DB_USERNAME=${DB_USERNAME}" -e "DB_PASSWORD=${DB_PASSWORD}" -e "SSH_USER=${SSH_USER}" -e "SSH_HOST_NAME=${SSH_HOST_NAME}" -e "SSH_REMOTE_PATH=${SSH_REMOTE_PATH}" -e "SSH_PASSWORD=${SSH_PASSWORD}" -e "SSH_PORT=${SSH_PORT}" -e "SSH_IDENTIFY_FILE=${SSH_IDENTIFY_FILE}" -e "GPG_PASSPHRASE=${GPG_PASSPHRASE}" ${IMAGE_NAME} backup --storage ssh --mode scheduled --period "* * * * *" docker-restore-ssh: docker-build - docker run --rm --network web --name pg-bkup -e "DB_HOST=${DB_HOST}" -e "DB_NAME=${DB_NAME}" -e "DB_USERNAME=${DB_USERNAME}" -e "DB_PASSWORD=${DB_PASSWORD}" -e "SSH_USER=${SSH_USER}" -e "SSH_HOST_NAME=${SSH_HOST_NAME}" -e "SSH_REMOTE_PATH=${SSH_REMOTE_PATH}" -e "SSH_PASSWORD=${SSH_PASSWORD}" -e "SSH_PORT=${SSH_PORT}" -e "GPG_PASSPHRASE=${GPG_PASSPHRASE}" -e "SSH_IDENTIFY_FILE=${SSH_IDENTIFY_FILE}" ${IMAGE_NAME} bkup restore --storage ssh -f ${FILE_NAME} + docker run --rm --network web --name pg-bkup -e "DB_HOST=${DB_HOST}" -e "DB_NAME=${DB_NAME}" -e "DB_USERNAME=${DB_USERNAME}" -e "DB_PASSWORD=${DB_PASSWORD}" -e "SSH_USER=${SSH_USER}" -e "SSH_HOST_NAME=${SSH_HOST_NAME}" -e "SSH_REMOTE_PATH=${SSH_REMOTE_PATH}" -e "SSH_PASSWORD=${SSH_PASSWORD}" -e "SSH_PORT=${SSH_PORT}" -e "GPG_PASSPHRASE=${GPG_PASSPHRASE}" -e "SSH_IDENTIFY_FILE=${SSH_IDENTIFY_FILE}" ${IMAGE_NAME} restore --storage ssh -f ${FILE_NAME} run-docs: cd docs && bundle exec jekyll serve -H 0.0.0.0 -t \ No newline at end of file diff --git a/README.md b/README.md index 0c0b6d8..b2c4d28 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,5 @@ # PostgreSQL Backup -pg-bkup is a Docker container image that can be used to backup and restore Postgres database. It supports local storage, AWS S3 or any S3 Alternatives for Object Storage, and SSH compatible storage. +PostgreSQL Backup is a Docker container image that can be used to backup and restore Postgres database. It supports local storage, AWS S3 or any S3 Alternatives for Object Storage, and SSH compatible storage. It also supports __encrypting__ your backups using GPG. The [jkaninda/pg-bkup](https://hub.docker.com/r/jkaninda/pg-bkup) Docker image can be deployed on Docker, Docker Swarm and Kubernetes. @@ -13,6 +13,7 @@ It also supports __encrypting__ your backups using GPG. ![Docker Pulls](https://img.shields.io/docker/pulls/jkaninda/pg-bkup?style=flat-square) - Docker +- Docker Swarm - Kubernetes ## Documentation is found at @@ -44,7 +45,7 @@ To run a one time backup, bind your local volume to `/backup` in the container a -e "DB_HOST=dbhost" \ -e "DB_USERNAME=username" \ -e "DB_PASSWORD=password" \ - jkaninda/pg-bkup pg-bkup backup -d database_name + jkaninda/pg-bkup backup -d database_name ``` Alternatively, pass a `--env-file` in order to use a full config as described below. @@ -61,10 +62,7 @@ services: # for a list of available releases. image: jkaninda/pg-bkup container_name: pg-bkup - command: - - /bin/sh - - -c - - pg-bkup backup + command: backup volumes: - ./backup:/backup environment: @@ -89,7 +87,7 @@ For Kubernetes, you don't need to run it in scheduled mode. You can deploy it as apiVersion: batch/v1 kind: CronJob metadata: - name: bkup-job + name: backup-job spec: schedule: "0 1 * * *" jobTemplate: @@ -100,9 +98,11 @@ spec: - name: pg-bkup image: jkaninda/pg-bkup command: - - /bin/sh - - -c - - pg-bkup backup -s s3 --path /custom_path + - bkup + - backup + - --storage + - s3 + - --disable-compression env: - name: DB_PORT value: "5432" diff --git a/cmd/root.go b/cmd/root.go index d3688ec..613a335 100644 --- a/cmd/root.go +++ b/cmd/root.go @@ -35,7 +35,6 @@ func init() { rootCmd.PersistentFlags().StringP("dbname", "d", "", "Database name") rootCmd.PersistentFlags().IntP("port", "p", 5432, "Database port") rootCmd.PersistentFlags().StringVarP(&operation, "operation", "o", "", "Set operation, for old version only") - rootCmd.AddCommand(VersionCmd) rootCmd.AddCommand(BackupCmd) rootCmd.AddCommand(RestoreCmd) diff --git a/docker/Dockerfile b/docker/Dockerfile index 632a1b4..e57c46a 100644 --- a/docker/Dockerfile +++ b/docker/Dockerfile @@ -65,4 +65,4 @@ RUN ln -s /usr/local/bin/pg-bkup /usr/local/bin/bkup ADD docker/supervisord.conf /etc/supervisor/supervisord.conf WORKDIR $WORKDIR -#ENTRYPOINT ["/usr/local/bin/pg-bkup"] +ENTRYPOINT ["/usr/local/bin/pg-bkup"] diff --git a/docs/how-tos/backup-to-s3.md b/docs/how-tos/backup-to-s3.md index 312e9ee..5fe120b 100644 --- a/docs/how-tos/backup-to-s3.md +++ b/docs/how-tos/backup-to-s3.md @@ -22,10 +22,7 @@ services: # for a list of available releases. image: jkaninda/pg-bkup container_name: pg-bkup - command: - - /bin/sh - - -c - - pg-bkup backup --storage s3 -d database --path /my-custom-path + command: backup --storage s3 -d database --path /my-custom-path environment: - DB_PORT=5432 - DB_HOST=postgres @@ -62,10 +59,7 @@ services: # for a list of available releases. image: jkaninda/pg-bkup container_name: pg-bkup - command: - - /bin/sh - - -c - - pg-bkup backup --storage s3 -d my-database --mode scheduled --period "0 1 * * *" + command: backup --storage s3 -d my-database --mode scheduled --period "0 1 * * *" environment: - DB_PORT=5432 - DB_HOST=postgres diff --git a/docs/how-tos/backup-to-ssh.md b/docs/how-tos/backup-to-ssh.md index 4d75030..2ba01d9 100644 --- a/docs/how-tos/backup-to-ssh.md +++ b/docs/how-tos/backup-to-ssh.md @@ -23,10 +23,7 @@ services: # for a list of available releases. image: jkaninda/pg-bkup container_name: pg-bkup - command: - - /bin/sh - - -c - - pg-bkup backup --storage remote -d database + command: backup --storage remote -d database volumes: - ./id_ed25519:/tmp/id_ed25519" environment: diff --git a/docs/how-tos/backup.md b/docs/how-tos/backup.md index bf43d42..703fe8a 100644 --- a/docs/how-tos/backup.md +++ b/docs/how-tos/backup.md @@ -7,7 +7,7 @@ nav_order: 1 # Backup database -To backup the database, you need to add `backup` subcommand to `pg-bkup` or `bkup`. +To backup the database, you need to add `backup` command. {: .note } The default storage is local storage mounted to __/backup__. The backup is compressed by default using gzip. The flag __`disable-compression`__ can be used when you need to disable backup compression. @@ -15,7 +15,9 @@ The default storage is local storage mounted to __/backup__. The backup is compr {: .warning } Creating a user for backup tasks who has read-only access is recommended! -The backup process can be run in scheduled mode for the recurring backups. +The backup process can be run in scheduled mode for the recurring backups on Docker or Docker Swarm. +On Kubernetes it can be run as CronJob, you don't need to run it in Scheduled mode. + It handles __recurring__ backups of postgres database on Docker and can be deployed as __CronJob on Kubernetes__ using local, AWS S3 or SSH compatible storage. ```yml @@ -27,10 +29,7 @@ services: # for a list of available releases. image: jkaninda/pg-bkup container_name: pg-bkup - command: - - /bin/sh - - -c - - pg-bkup backup -d database + command: backup -d database volumes: - ./backup:/backup environment: @@ -54,7 +53,7 @@ networks: -e "DB_HOST=dbhost" \ -e "DB_USERNAME=username" \ -e "DB_PASSWORD=password" \ - jkaninda/pg-bkup pg-bkup backup -d database_name + jkaninda/pg-bkup backup -d database_name ``` In case you need to use recurring backups, you can use `--mode scheduled` and specify the periodical backup time by adding `--period "0 1 * * *"` flag as described below. @@ -68,10 +67,7 @@ services: # for a list of available releases. image: jkaninda/pg-bkup container_name: pg-bkup - command: - - /bin/sh - - -c - - pg-bkup backup -d database --mode scheduled --period "0 1 * * *" + #command: backup -d database --mode scheduled --period "0 1 * * *" volumes: - ./backup:/backup environment: diff --git a/docs/how-tos/deploy-on-kubernetes.md b/docs/how-tos/deploy-on-kubernetes.md new file mode 100644 index 0000000..8c4b83f --- /dev/null +++ b/docs/how-tos/deploy-on-kubernetes.md @@ -0,0 +1,228 @@ +--- +title: Deploy on Kubernetes +layout: default +parent: How Tos +nav_order: 8 +--- + +## Deploy on Kubernetes + +To deploy PostgreSQL Backup on Kubernetes, you can use Job to backup or Restore your database. +For recurring backup you can use CronJob, you don't need to run it in scheduled mode. as described bellow. + +## Backup Job + +```yaml +apiVersion: batch/v1 +kind: Job +metadata: + name: backup +spec: + ttlSecondsAfterFinished: 100 + template: + spec: + containers: + - name: pg-bkup + image: jkaninda/pg-bkup + command: + - bkup + - backup + - --storage + - ssh + - --disable-compression + resources: + limits: + memory: "128Mi" + cpu: "500m" + env: + - name: DB_PORT + value: "5432" + - name: DB_HOST + value: "" + - name: DB_NAME + value: "dbname" + - name: DB_USERNAME + value: "postgres" + # Please use secret! + - name: DB_PASSWORD + value: "" + - name: SSH_HOST_NAME + value: "xxx" + - name: SSH_PORT + value: "22" + - name: SSH_USER + value: "xxx" + - name: SSH_PASSWORD + value: "xxxx" + - name: SSH_REMOTE_PATH + value: "/home/toto/backup" + # Optional, required if you want to encrypt your backup + - name: GPG_PASSPHRASE + value: "xxxx" + restartPolicy: Never +``` + +## Restore Job + +```yaml +apiVersion: batch/v1 +kind: Job +metadata: + name: restore-job +spec: + ttlSecondsAfterFinished: 100 + template: + spec: + containers: + - name: pg-bkup + image: jkaninda/pg-bkup + command: + - bkup + - restore + - --storage + - ssh + - --file store_20231219_022941.sql.gz + resources: + limits: + memory: "128Mi" + cpu: "500m" + env: + - name: DB_PORT + value: "5432" + - name: DB_HOST + value: "" + - name: DB_NAME + value: "dbname" + - name: DB_USERNAME + value: "postgres" + # Please use secret! + - name: DB_PASSWORD + value: "" + - name: SSH_HOST_NAME + value: "xxx" + - name: SSH_PORT + value: "22" + - name: SSH_USER + value: "xxx" + - name: SSH_PASSWORD + value: "xxxx" + - name: SSH_REMOTE_PATH + value: "/home/toto/backup" + # Optional, required if your backup was encrypted + #- name: GPG_PASSPHRASE + # value: "xxxx" + restartPolicy: Never +``` + +## Recurring backup + +```yaml +apiVersion: batch/v1 +kind: CronJob +metadata: + name: backup-job +spec: + schedule: "* * * * *" + jobTemplate: + spec: + template: + spec: + containers: + - name: pg-bkup + image: jkaninda/pg-bkup + command: + - bkup + - backup + - --storage + - ssh + - --disable-compression + resources: + limits: + memory: "128Mi" + cpu: "500m" + env: + - name: DB_PORT + value: "5432" + - name: DB_HOST + value: "" + - name: DB_NAME + value: "test" + - name: DB_USERNAME + value: "postgres" + # Please use secret! + - name: DB_PASSWORD + value: "" + - name: SSH_HOST_NAME + value: "192.168.1.16" + - name: SSH_PORT + value: "2222" + - name: SSH_USER + value: "jkaninda" + - name: SSH_REMOTE_PATH + value: "/config/backup" + - name: SSH_PASSWORD + value: "password" + # Optional, required if you want to encrypt your backup + #- name: GPG_PASSPHRASE + # value: "xxx" + restartPolicy: Never +``` + +## Kubernetes Rootless + + +```yaml +apiVersion: batch/v1 +kind: CronJob +metadata: + name: backup-job +spec: + schedule: "* * * * *" + jobTemplate: + spec: + template: + spec: + securityContext: + runAsUser: 1000 + runAsGroup: 3000 + fsGroup: 2000 + containers: + - name: pg-bkup + image: jkaninda/pg-bkup + command: + - bkup + - backup + - --storage + - ssh + - --disable-compression + resources: + limits: + memory: "128Mi" + cpu: "500m" + env: + - name: DB_PORT + value: "5432" + - name: DB_HOST + value: "" + - name: DB_NAME + value: "test" + - name: DB_USERNAME + value: "postgres" + # Please use secret! + - name: DB_PASSWORD + value: "" + - name: SSH_HOST_NAME + value: "192.168.1.16" + - name: SSH_PORT + value: "2222" + - name: SSH_USER + value: "jkaninda" + - name: SSH_REMOTE_PATH + value: "/config/backup" + - name: SSH_PASSWORD + value: "password" + # Optional, required if you want to encrypt your backup + #- name: GPG_PASSPHRASE + # value: "xxx" + restartPolicy: OnFailure +``` diff --git a/docs/how-tos/encrypt-backup.md b/docs/how-tos/encrypt-backup.md index 8213aaf..4dea4b1 100644 --- a/docs/how-tos/encrypt-backup.md +++ b/docs/how-tos/encrypt-backup.md @@ -30,10 +30,7 @@ services: # for a list of available releases. image: jkaninda/pg-bkup container_name: pg-bkup - command: - - /bin/sh - - -c - - pg-bkup backup -d database + command: backup -d database volumes: - ./backup:/backup environment: diff --git a/docs/how-tos/restore-from-s3.md b/docs/how-tos/restore-from-s3.md index 2580ac8..dff1909 100644 --- a/docs/how-tos/restore-from-s3.md +++ b/docs/how-tos/restore-from-s3.md @@ -7,7 +7,7 @@ nav_order: 5 # Restore database from S3 storage -To restore the database, you need to add `restore` subcommand to `pg-bkup` or `bkup` and specify the file to restore by adding `--file store_20231219_022941.sql.gz`. +To restore the database, you need to add `restore` command and specify the file to restore by adding `--file store_20231219_022941.sql.gz`. {: .note } It supports __.sql__ and __.sql.gz__ compressed file. @@ -23,10 +23,7 @@ services: # for a list of available releases. image: jkaninda/pg-bkup container_name: pg-bkup - command: - - /bin/sh - - -c - - bkup restore --storage s3 -d my-database -f store_20231219_022941.sql.gz --path /my-custom-path + command: restore --storage s3 -d my-database -f store_20231219_022941.sql.gz --path /my-custom-path volumes: - ./backup:/backup environment: diff --git a/docs/how-tos/restore-from-ssh.md b/docs/how-tos/restore-from-ssh.md index 12810e4..b6ffc81 100644 --- a/docs/how-tos/restore-from-ssh.md +++ b/docs/how-tos/restore-from-ssh.md @@ -6,7 +6,7 @@ nav_order: 6 --- # Restore database from SSH remote server -To restore the database from your remote server, you need to add `restore` subcommand to `pg-bkup` or `bkup` and specify the file to restore by adding `--file store_20231219_022941.sql.gz`. +To restore the database from your remote server, you need to add `restore` command and specify the file to restore by adding `--file store_20231219_022941.sql.gz`. {: .note } It supports __.sql__ and __.sql.gz__ compressed file. @@ -22,10 +22,7 @@ services: # for a list of available releases. image: jkaninda/pg-bkup container_name: pg-bkup - command: - - /bin/sh - - -c - - pg-bkup restore --storage ssh -d my-database -f store_20231219_022941.sql.gz --path /home/jkaninda/backups + command: restore --storage ssh -d my-database -f store_20231219_022941.sql.gz --path /home/jkaninda/backups volumes: - ./backup:/backup environment: diff --git a/docs/how-tos/restore.md b/docs/how-tos/restore.md index 8acc16f..d8f8f56 100644 --- a/docs/how-tos/restore.md +++ b/docs/how-tos/restore.md @@ -7,7 +7,7 @@ nav_order: 4 # Restore database -To restore the database, you need to add `restore` subcommand to `pg-bkup` or `bkup` and specify the file to restore by adding `--file store_20231219_022941.sql.gz`. +To restore the database, you need to add `restore` command and specify the file to restore by adding `--file store_20231219_022941.sql.gz`. {: .note } It supports __.sql__ and __.sql.gz__ compressed file. @@ -23,10 +23,7 @@ services: # for a list of available releases. image: jkaninda/pg-bkup container_name: pg-bkup - command: - - /bin/sh - - -c - - pg-bkup restore -d database -f store_20231219_022941.sql.gz + command: restore -d database -f store_20231219_022941.sql.gz volumes: - ./backup:/backup environment: diff --git a/docs/index.md b/docs/index.md index ace5e52..b040d89 100644 --- a/docs/index.md +++ b/docs/index.md @@ -6,7 +6,7 @@ nav_order: 1 # About pg-bkup {:.no_toc} -pg-bkup is a Docker container image that can be used to backup and restore Postgres database. It supports local storage, AWS S3 or any S3 Alternatives for Object Storage, and SSH compatible storage. +PostreSQL Backup is a Docker container image that can be used to backup and restore Postgres database. It supports local storage, AWS S3 or any S3 Alternatives for Object Storage, and SSH compatible storage. It also supports __encrypting__ your backups using GPG. We are open to receiving stars, PRs, and issues! @@ -40,7 +40,7 @@ To run a one time backup, bind your local volume to `/backup` in the container a -e "DB_HOST=dbhost" \ -e "DB_USERNAME=username" \ -e "DB_PASSWORD=password" \ - jkaninda/pg-bkup pg-bkup backup -d database_name + jkaninda/pg-bkup backup -d database_name ``` Alternatively, pass a `--env-file` in order to use a full config as described below. @@ -56,10 +56,7 @@ services: # for a list of available releases. image: jkaninda/pg-bkup container_name: pg-bkup - command: - - /bin/sh - - -c - - pg-bkup backup + command: backup volumes: - ./backup:/backup environment: @@ -81,8 +78,8 @@ This Docker image is published to both Docker Hub and the GitHub container regis Depending on your preferences and needs, you can reference both `jkaninda/pg-bkup` as well as `ghcr.io/jkaninda/pg-bkup`: ``` -docker pull jkaninda/pg-bkup:v1.2.0 -docker pull ghcr.io/jkaninda/pg-bkup:v1.2.0 +docker pull jkaninda/pg-bkup +docker pull ghcr.io/jkaninda/pg-bkup ``` Documentation references Docker Hub, but all examples will work using ghcr.io just as well. diff --git a/examples/docker-compose.s3.yaml b/examples/docker-compose.s3.yaml index 15ac3d1..8d4d6ea 100644 --- a/examples/docker-compose.s3.yaml +++ b/examples/docker-compose.s3.yaml @@ -6,10 +6,7 @@ services: # for a list of available releases. image: jkaninda/pg-bkup container_name: pg-bkup - command: - - /bin/sh - - -c - - pg-bkup backup --storage s3 -d my-database" + command: backup --storage s3 -d my-database" environment: - DB_PORT=5432 - DB_HOST=postgres diff --git a/examples/docker-compose.scheduled.local.yaml b/examples/docker-compose.scheduled.local.yaml index d04fe9e..8e2ccf4 100644 --- a/examples/docker-compose.scheduled.local.yaml +++ b/examples/docker-compose.scheduled.local.yaml @@ -3,10 +3,7 @@ services: pg-bkup: image: jkaninda/pg-bkup container_name: pg-bkup - command: - - /bin/sh - - -c - - pg-bkup backup --dbname database_name --mode scheduled --period "0 1 * * *" + command: backup --dbname database_name --mode scheduled --period "0 1 * * *" volumes: - ./backup:/backup environment: diff --git a/examples/docker-compose.scheduled.s3.yaml b/examples/docker-compose.scheduled.s3.yaml index b69e689..6e4e049 100644 --- a/examples/docker-compose.scheduled.s3.yaml +++ b/examples/docker-compose.scheduled.s3.yaml @@ -6,10 +6,7 @@ services: # for a list of available releases. image: jkaninda/pg-bkup container_name: pg-bkup - command: - - /bin/sh - - -c - - pg-bkup backup --storage s3 -d my-database --mode scheduled --period "0 1 * * *" + command: backup --storage s3 -d my-database --mode scheduled --period "0 1 * * *" environment: - DB_PORT=5432 - DB_HOST=postgres diff --git a/examples/docker-compose.yaml b/examples/docker-compose.yaml index 4807a69..895ac99 100644 --- a/examples/docker-compose.yaml +++ b/examples/docker-compose.yaml @@ -3,10 +3,7 @@ services: pg-bkup: image: jkaninda/pg-bkup container_name: pg-bkup - command: - - /bin/sh - - -c - - pg-bkup backup --dbname database_name + command: backup --dbname database_name volumes: - ./backup:/backup environment: