From 6031d2e99176bdc3ee70fd001e12e61184bfe89f Mon Sep 17 00:00:00 2001 From: Jonas Kaninda Date: Tue, 15 Oct 2024 15:58:32 +0200 Subject: [PATCH 1/5] refactor: add default env variable value --- .env.example | 0 pkg/config.go | 6 +++--- utils/utils.go | 8 ++++++++ 3 files changed, 11 insertions(+), 3 deletions(-) create mode 100644 .env.example diff --git a/.env.example b/.env.example new file mode 100644 index 0000000..e69de29 diff --git a/pkg/config.go b/pkg/config.go index 5015fce..89d9a3c 100644 --- a/pkg/config.go +++ b/pkg/config.go @@ -154,11 +154,11 @@ func initAWSConfig() *AWSConfig { aConfig.region = os.Getenv("AWS_REGION") disableSsl, err := strconv.ParseBool(os.Getenv("AWS_DISABLE_SSL")) if err != nil { - utils.Fatal("Unable to parse AWS_DISABLE_SSL env var: %s", err) + disableSsl = false } forcePathStyle, err := strconv.ParseBool(os.Getenv("AWS_FORCE_PATH_STYLE")) if err != nil { - utils.Fatal("Unable to parse AWS_FORCE_PATH_STYLE env var: %s", err) + forcePathStyle = false } aConfig.disableSsl = disableSsl aConfig.forcePathStyle = forcePathStyle @@ -253,7 +253,7 @@ func initRestoreConfig(cmd *cobra.Command) *RestoreConfig { func initTargetDbConfig() *targetDbConfig { tdbConfig := targetDbConfig{} tdbConfig.targetDbHost = os.Getenv("TARGET_DB_HOST") - tdbConfig.targetDbPort = os.Getenv("TARGET_DB_PORT") + tdbConfig.targetDbPort = utils.EnvWithDefault("TARGET_DB_PORT", "5432") tdbConfig.targetDbName = os.Getenv("TARGET_DB_NAME") tdbConfig.targetDbUserName = os.Getenv("TARGET_DB_USERNAME") tdbConfig.targetDbPassword = os.Getenv("TARGET_DB_PASSWORD") diff --git a/utils/utils.go b/utils/utils.go index b57e064..f37189e 100644 --- a/utils/utils.go +++ b/utils/utils.go @@ -180,3 +180,11 @@ func GetIntEnv(envName string) int { } return ret } + +func EnvWithDefault(envName string, defaultValue string) string { + value := os.Getenv(envName) + if value == "" { + return defaultValue + } + return value +} From 65abf29020fbfc10f2ce9aa774893455824edc19 Mon Sep 17 00:00:00 2001 From: Jonas Kaninda Date: Tue, 15 Oct 2024 15:59:19 +0200 Subject: [PATCH 2/5] chore: clean up Dockerfile --- Dockerfile | 34 ---------------------------------- 1 file changed, 34 deletions(-) diff --git a/Dockerfile b/Dockerfile index 7553a48..2704b9e 100644 --- a/Dockerfile +++ b/Dockerfile @@ -10,45 +10,11 @@ RUN go mod download RUN CGO_ENABLED=0 GOOS=linux go build -o /app/pg-bkup FROM alpine:3.20.3 -ENV DB_HOST="" -ENV DB_NAME="" -ENV DB_USERNAME="" -ENV DB_PASSWORD="" -ENV DB_PORT=5432 -ENV STORAGE=local -ENV AWS_S3_ENDPOINT="" -ENV AWS_S3_BUCKET_NAME="" -ENV AWS_ACCESS_KEY="" -ENV AWS_SECRET_KEY="" -ENV AWS_S3_PATH="" -ENV AWS_REGION="us-west-2" -ENV AWS_DISABLE_SSL="false" -ENV AWS_FORCE_PATH_STYLE="true" -ENV GPG_PASSPHRASE="" -ENV SSH_USER="" -ENV SSH_PASSWORD="" -ENV SSH_HOST="" -ENV SSH_IDENTIFY_FILE="" -ENV SSH_PORT=22 -ENV REMOTE_PATH="" -ENV FTP_HOST="" -ENV FTP_PORT=21 -ENV FTP_USER="" -ENV FTP_PASSWORD="" -ENV TARGET_DB_HOST="" -ENV TARGET_DB_PORT=5432 -ENV TARGET_DB_NAME="" -ENV TARGET_DB_USERNAME="" -ENV TARGET_DB_PASSWORD="" -ENV BACKUP_CRON_EXPRESSION="" -ENV TG_TOKEN="" -ENV TG_CHAT_ID="" ENV TZ=UTC ARG WORKDIR="/config" ARG BACKUPDIR="/backup" ARG BACKUP_TMP_DIR="/tmp/backup" ARG TEMPLATES_DIR="/config/templates" -ARG appVersion="v1.2.11" ENV VERSION=${appVersion} LABEL author="Jonas Kaninda" LABEL version=${appVersion} From 82976f60b666391a7ac5f3fe30eeb7a8ead22d5b Mon Sep 17 00:00:00 2001 From: Jonas Kaninda Date: Tue, 15 Oct 2024 16:19:56 +0200 Subject: [PATCH 3/5] ad env.example --- .env.example | 68 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 68 insertions(+) diff --git a/.env.example b/.env.example index e69de29..0ce0b09 100644 --- a/.env.example +++ b/.env.example @@ -0,0 +1,68 @@ +### Database +DB_HOST= +DB_PORT=5432 +DB_USERNAME= +DB_PASSWORD= +DB_NAME= +TZ=Europe/Paris + +### Database Migration +#TARGET_DB_HOST= +#TARGET_DB_PORT=5432 +#TARGET_DB_NAME= +#TARGET_DB_USERNAME= +#TARGET_DB_PASSWORD= + +### Backup restoration +#FILE_NAME= + +### AWS S3 Storage +#ACCESS_KEY= +#SECRET_KEY= +#AWS_S3_BUCKET_NAME= +#AWS_S3_ENDPOINT= +#AWS_REGION= +#AWS_S3_PATH= +#AWS_DISABLE_SSL=false +#AWS_FORCE_PATH_STYLE=true + +### Backup Cron Expression +#BACKUP_CRON_EXPRESSION=@midnight + +####SSH Storage +#SSH_HOST_NAME= +#SSH_PORT=22 +#SSH_USER= +#SSH_PASSWORD= +#SSH_IDENTIFY_FILE=/tmp/id_ed25519 + +####FTP Storage +#FTP_PASSWORD= +#FTP_HOST_NAME= +#FTP_USER= +#FTP_PORT=21 +#REMOTE_PATH= +#### Backup encryption +#GPG_PUBLIC_KEY=/config/public_key.asc +#GPG_PRIVATE_KEY=/config/private_key.asc +#GPG_PASSPHRASE=Your strong passphrase +## For multiple database backup on Docker or Docker in Swarm mode +#BACKUP_CONFIG_FILE=/config/config.yaml +### Database restoration +#FILE_NAME= +### Notification +#BACKUP_REFERENCE=K8s/Paris cluster +## Telegram +#TG_TOKEN= +#TG_CHAT_ID= +### Email +#MAIL_HOST= +#MAIL_PORT= +#MAIL_USERNAME= +#MAIL_PASSWORD= +#MAIL_FROM=Backup Jobs +#MAIL_TO=backup@example.com,me@example.com,team@example.com +#MAIL_SKIP_TLS=false + + + From 3d4b9fa7ba9fc0f0443a1bb81008cb14cfebeaf0 Mon Sep 17 00:00:00 2001 From: Jonas Kaninda Date: Tue, 15 Oct 2024 16:20:26 +0200 Subject: [PATCH 4/5] add env.example --- .env.example | 1 - 1 file changed, 1 deletion(-) diff --git a/.env.example b/.env.example index 0ce0b09..2f96283 100644 --- a/.env.example +++ b/.env.example @@ -15,7 +15,6 @@ TZ=Europe/Paris ### Backup restoration #FILE_NAME= - ### AWS S3 Storage #ACCESS_KEY= #SECRET_KEY= From 6fbe4a3abc4d5ec9d8028383964edc98d5e3fb1c Mon Sep 17 00:00:00 2001 From: Jonas Kaninda Date: Tue, 15 Oct 2024 16:24:48 +0200 Subject: [PATCH 5/5] docs: update scheduled backup docker deployment example --- README.md | 2 +- docs/index.md | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index b520f67..f9b9914 100644 --- a/README.md +++ b/README.md @@ -99,7 +99,7 @@ networks: -e "DB_HOST=hostname" \ -e "DB_USERNAME=user" \ -e "DB_PASSWORD=password" \ - jkaninda/pg-bkup backup -d dbName --cron-expression "@every 1m" + jkaninda/pg-bkup backup -d dbName --cron-expression "@every 15m" #@midnight ``` See: https://jkaninda.github.io/pg-bkup/reference/#predefined-schedules diff --git a/docs/index.md b/docs/index.md index 48f7754..0538ad4 100644 --- a/docs/index.md +++ b/docs/index.md @@ -93,7 +93,7 @@ networks: -e "DB_HOST=hostname" \ -e "DB_USERNAME=user" \ -e "DB_PASSWORD=password" \ - jkaninda/pg-bkup backup -d dbName --cron-expression "@every 1m" + jkaninda/pg-bkup backup -d dbName --cron-expression "@every 15m" #@midnight ``` See: https://jkaninda.github.io/pg-bkup/reference/#predefined-schedules