Skip to content

Commit 45c30dc

Browse files
authored
Merge pull request #127 from jkaninda/refactor
Refactor
2 parents 45e3452 + b0ae212 commit 45c30dc

File tree

6 files changed

+81
-39
lines changed

6 files changed

+81
-39
lines changed

.env.example

Lines changed: 67 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,67 @@
1+
### Database
2+
DB_HOST=
3+
DB_PORT=3306
4+
DB_USERNAME=
5+
DB_PASSWORD=
6+
DB_NAME=
7+
TZ=Europe/Paris
8+
9+
### Database Migration
10+
#TARGET_DB_HOST=
11+
#TARGET_DB_PORT=3306
12+
#TARGET_DB_NAME=
13+
#TARGET_DB_USERNAME=
14+
#TARGET_DB_PASSWORD=
15+
16+
### Backup restoration
17+
#FILE_NAME=
18+
### AWS S3 Storage
19+
#ACCESS_KEY=
20+
#SECRET_KEY=
21+
#AWS_S3_BUCKET_NAME=
22+
#AWS_S3_ENDPOINT=
23+
#AWS_REGION=
24+
#AWS_S3_PATH=
25+
#AWS_DISABLE_SSL=false
26+
#AWS_FORCE_PATH_STYLE=true
27+
28+
### Backup Cron Expression
29+
#BACKUP_CRON_EXPRESSION=@midnight
30+
31+
####SSH Storage
32+
#SSH_HOST_NAME=
33+
#SSH_PORT=22
34+
#SSH_USER=
35+
#SSH_PASSWORD=
36+
#SSH_IDENTIFY_FILE=/tmp/id_ed25519
37+
38+
####FTP Storage
39+
#FTP_PASSWORD=
40+
#FTP_HOST_NAME=
41+
#FTP_USER=
42+
#FTP_PORT=21
43+
#REMOTE_PATH=
44+
#### Backup encryption
45+
#GPG_PUBLIC_KEY=/config/public_key.asc
46+
#GPG_PRIVATE_KEY=/config/private_key.asc
47+
#GPG_PASSPHRASE=Your strong passphrase
48+
## For multiple database backup on Docker or Docker in Swarm mode
49+
#BACKUP_CONFIG_FILE=/config/config.yaml
50+
### Database restoration
51+
#FILE_NAME=
52+
### Notification
53+
#BACKUP_REFERENCE=K8s/Paris cluster
54+
## Telegram
55+
#TG_TOKEN=
56+
#TG_CHAT_ID=
57+
### Email
58+
#MAIL_HOST=
59+
#MAIL_PORT=
60+
#MAIL_USERNAME=
61+
#MAIL_PASSWORD=
62+
#MAIL_FROM=Backup Jobs <backup-jobs@example.com>
63+
#MAIL_TO=backup@example.com,me@example.com,team@example.com
64+
#MAIL_SKIP_TLS=false
65+
66+
67+

Dockerfile

Lines changed: 2 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -10,48 +10,16 @@ RUN go mod download
1010
RUN CGO_ENABLED=0 GOOS=linux go build -o /app/mysql-bkup
1111

1212
FROM alpine:3.20.3
13-
ENV DB_HOST=""
14-
ENV DB_NAME=""
15-
ENV DB_USERNAME=""
16-
ENV DB_PASSWORD=""
17-
ENV DB_PORT=3306
18-
ENV STORAGE=local
19-
ENV AWS_S3_ENDPOINT=""
20-
ENV AWS_S3_BUCKET_NAME=""
21-
ENV AWS_ACCESS_KEY=""
22-
ENV AWS_SECRET_KEY=""
23-
ENV AWS_S3_PATH=""
24-
ENV AWS_REGION="us-west-2"
25-
ENV AWS_DISABLE_SSL="false"
26-
ENV AWS_FORCE_PATH_STYLE="true"
27-
ENV GPG_PASSPHRASE=""
28-
ENV SSH_USER=""
29-
ENV SSH_PASSWORD=""
30-
ENV SSH_HOST=""
31-
ENV SSH_IDENTIFY_FILE=""
32-
ENV SSH_PORT=22
33-
ENV REMOTE_PATH=""
34-
ENV FTP_HOST=""
35-
ENV FTP_PORT=21
36-
ENV FTP_USER=""
37-
ENV FTP_PASSWORD=""
38-
ENV TARGET_DB_HOST=""
39-
ENV TARGET_DB_PORT=3306
40-
ENV TARGET_DB_NAME=""
41-
ENV TARGET_DB_USERNAME=""
42-
ENV TARGET_DB_PASSWORD=""
43-
ENV BACKUP_CRON_EXPRESSION=""
44-
ENV TG_TOKEN=""
45-
ENV TG_CHAT_ID=""
4613
ENV TZ=UTC
4714
ARG WORKDIR="/config"
4815
ARG BACKUPDIR="/backup"
4916
ARG BACKUP_TMP_DIR="/tmp/backup"
5017
ARG TEMPLATES_DIR="/config/templates"
51-
ARG appVersion="v1.2.12"
18+
ARG appVersion=""
5219
ENV VERSION=${appVersion}
5320
LABEL author="Jonas Kaninda"
5421
LABEL version=${appVersion}
22+
LABEL github="github.com/jkaninda/mysql-bkup"
5523

5624
RUN apk --update add --no-cache mysql-client mariadb-connector-c tzdata ca-certificates
5725
RUN mkdir $WORKDIR

README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -99,7 +99,7 @@ networks:
9999
-e "DB_HOST=hostname" \
100100
-e "DB_USERNAME=user" \
101101
-e "DB_PASSWORD=password" \
102-
jkaninda/mysql-bkup backup -d dbName --cron-expression "@every 1m"
102+
jkaninda/mysql-bkup backup -d dbName --cron-expression "@every 15m" #@midnight
103103
```
104104
See: https://jkaninda.github.io/mysql-bkup/reference/#predefined-schedules
105105

docs/index.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -91,7 +91,7 @@ networks:
9191
-e "DB_HOST=hostname" \
9292
-e "DB_USERNAME=user" \
9393
-e "DB_PASSWORD=password" \
94-
jkaninda/mysql-bkup backup -d dbName --cron-expression "@every 1m"
94+
jkaninda/mysql-bkup backup -d dbName --cron-expression "@every 15m" #@midnight
9595
```
9696
See: https://jkaninda.github.io/mysql-bkup/reference/#predefined-schedules
9797

pkg/config.go

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -154,11 +154,11 @@ func initAWSConfig() *AWSConfig {
154154
aConfig.region = os.Getenv("AWS_REGION")
155155
disableSsl, err := strconv.ParseBool(os.Getenv("AWS_DISABLE_SSL"))
156156
if err != nil {
157-
utils.Fatal("Unable to parse AWS_DISABLE_SSL env var: %s", err)
157+
disableSsl = false
158158
}
159159
forcePathStyle, err := strconv.ParseBool(os.Getenv("AWS_FORCE_PATH_STYLE"))
160160
if err != nil {
161-
utils.Fatal("Unable to parse AWS_FORCE_PATH_STYLE env var: %s", err)
161+
forcePathStyle = false
162162
}
163163
aConfig.disableSsl = disableSsl
164164
aConfig.forcePathStyle = forcePathStyle
@@ -253,7 +253,7 @@ func initRestoreConfig(cmd *cobra.Command) *RestoreConfig {
253253
func initTargetDbConfig() *targetDbConfig {
254254
tdbConfig := targetDbConfig{}
255255
tdbConfig.targetDbHost = os.Getenv("TARGET_DB_HOST")
256-
tdbConfig.targetDbPort = os.Getenv("TARGET_DB_PORT")
256+
tdbConfig.targetDbPort = utils.EnvWithDefault("TARGET_DB_PORT", "3306")
257257
tdbConfig.targetDbName = os.Getenv("TARGET_DB_NAME")
258258
tdbConfig.targetDbUserName = os.Getenv("TARGET_DB_USERNAME")
259259
tdbConfig.targetDbPassword = os.Getenv("TARGET_DB_PASSWORD")

utils/utils.go

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -180,3 +180,10 @@ func GetIntEnv(envName string) int {
180180
}
181181
return ret
182182
}
183+
func EnvWithDefault(envName string, defaultValue string) string {
184+
value := os.Getenv(envName)
185+
if value == "" {
186+
return defaultValue
187+
}
188+
return value
189+
}

0 commit comments

Comments
 (0)