Merge pull request #111 from jkaninda/refactor

Refactor
This commit is contained in:
2024-10-15 16:25:28 +02:00
committed by GitHub
6 changed files with 80 additions and 39 deletions

67
.env.example Normal file
View File

@@ -0,0 +1,67 @@
### 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 <backup-jobs@example.com>
#MAIL_TO=backup@example.com,me@example.com,team@example.com
#MAIL_SKIP_TLS=false

View File

@@ -10,45 +10,11 @@ RUN go mod download
RUN CGO_ENABLED=0 GOOS=linux go build -o /app/pg-bkup RUN CGO_ENABLED=0 GOOS=linux go build -o /app/pg-bkup
FROM alpine:3.20.3 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 ENV TZ=UTC
ARG WORKDIR="/config" ARG WORKDIR="/config"
ARG BACKUPDIR="/backup" ARG BACKUPDIR="/backup"
ARG BACKUP_TMP_DIR="/tmp/backup" ARG BACKUP_TMP_DIR="/tmp/backup"
ARG TEMPLATES_DIR="/config/templates" ARG TEMPLATES_DIR="/config/templates"
ARG appVersion="v1.2.11"
ENV VERSION=${appVersion} ENV VERSION=${appVersion}
LABEL author="Jonas Kaninda" LABEL author="Jonas Kaninda"
LABEL version=${appVersion} LABEL version=${appVersion}

View File

@@ -99,7 +99,7 @@ networks:
-e "DB_HOST=hostname" \ -e "DB_HOST=hostname" \
-e "DB_USERNAME=user" \ -e "DB_USERNAME=user" \
-e "DB_PASSWORD=password" \ -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 See: https://jkaninda.github.io/pg-bkup/reference/#predefined-schedules

View File

@@ -93,7 +93,7 @@ networks:
-e "DB_HOST=hostname" \ -e "DB_HOST=hostname" \
-e "DB_USERNAME=user" \ -e "DB_USERNAME=user" \
-e "DB_PASSWORD=password" \ -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 See: https://jkaninda.github.io/pg-bkup/reference/#predefined-schedules

View File

@@ -154,11 +154,11 @@ func initAWSConfig() *AWSConfig {
aConfig.region = os.Getenv("AWS_REGION") aConfig.region = os.Getenv("AWS_REGION")
disableSsl, err := strconv.ParseBool(os.Getenv("AWS_DISABLE_SSL")) disableSsl, err := strconv.ParseBool(os.Getenv("AWS_DISABLE_SSL"))
if err != nil { 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")) forcePathStyle, err := strconv.ParseBool(os.Getenv("AWS_FORCE_PATH_STYLE"))
if err != nil { if err != nil {
utils.Fatal("Unable to parse AWS_FORCE_PATH_STYLE env var: %s", err) forcePathStyle = false
} }
aConfig.disableSsl = disableSsl aConfig.disableSsl = disableSsl
aConfig.forcePathStyle = forcePathStyle aConfig.forcePathStyle = forcePathStyle
@@ -253,7 +253,7 @@ func initRestoreConfig(cmd *cobra.Command) *RestoreConfig {
func initTargetDbConfig() *targetDbConfig { func initTargetDbConfig() *targetDbConfig {
tdbConfig := targetDbConfig{} tdbConfig := targetDbConfig{}
tdbConfig.targetDbHost = os.Getenv("TARGET_DB_HOST") 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.targetDbName = os.Getenv("TARGET_DB_NAME")
tdbConfig.targetDbUserName = os.Getenv("TARGET_DB_USERNAME") tdbConfig.targetDbUserName = os.Getenv("TARGET_DB_USERNAME")
tdbConfig.targetDbPassword = os.Getenv("TARGET_DB_PASSWORD") tdbConfig.targetDbPassword = os.Getenv("TARGET_DB_PASSWORD")

View File

@@ -180,3 +180,11 @@ func GetIntEnv(envName string) int {
} }
return ret return ret
} }
func EnvWithDefault(envName string, defaultValue string) string {
value := os.Getenv(envName)
if value == "" {
return defaultValue
}
return value
}