mirror of
https://github.com/jkaninda/mysql-bkup.git
synced 2025-12-06 13:39:41 +01:00
67
.env.example
Normal file
67
.env.example
Normal file
@@ -0,0 +1,67 @@
|
|||||||
|
### Database
|
||||||
|
DB_HOST=
|
||||||
|
DB_PORT=3306
|
||||||
|
DB_USERNAME=
|
||||||
|
DB_PASSWORD=
|
||||||
|
DB_NAME=
|
||||||
|
TZ=Europe/Paris
|
||||||
|
|
||||||
|
### Database Migration
|
||||||
|
#TARGET_DB_HOST=
|
||||||
|
#TARGET_DB_PORT=3306
|
||||||
|
#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
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
36
Dockerfile
36
Dockerfile
@@ -10,48 +10,16 @@ RUN go mod download
|
|||||||
RUN CGO_ENABLED=0 GOOS=linux go build -o /app/mysql-bkup
|
RUN CGO_ENABLED=0 GOOS=linux go build -o /app/mysql-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=3306
|
|
||||||
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=3306
|
|
||||||
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.12"
|
ARG appVersion=""
|
||||||
ENV VERSION=${appVersion}
|
ENV VERSION=${appVersion}
|
||||||
LABEL author="Jonas Kaninda"
|
LABEL author="Jonas Kaninda"
|
||||||
LABEL version=${appVersion}
|
LABEL version=${appVersion}
|
||||||
|
LABEL github="github.com/jkaninda/mysql-bkup"
|
||||||
|
|
||||||
RUN apk --update add --no-cache mysql-client mariadb-connector-c tzdata ca-certificates
|
RUN apk --update add --no-cache mysql-client mariadb-connector-c tzdata ca-certificates
|
||||||
RUN mkdir $WORKDIR
|
RUN mkdir $WORKDIR
|
||||||
|
|||||||
@@ -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/mysql-bkup backup -d dbName --cron-expression "@every 1m"
|
jkaninda/mysql-bkup backup -d dbName --cron-expression "@every 15m" #@midnight
|
||||||
```
|
```
|
||||||
See: https://jkaninda.github.io/mysql-bkup/reference/#predefined-schedules
|
See: https://jkaninda.github.io/mysql-bkup/reference/#predefined-schedules
|
||||||
|
|
||||||
|
|||||||
@@ -91,7 +91,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/mysql-bkup backup -d dbName --cron-expression "@every 1m"
|
jkaninda/mysql-bkup backup -d dbName --cron-expression "@every 15m" #@midnight
|
||||||
```
|
```
|
||||||
See: https://jkaninda.github.io/mysql-bkup/reference/#predefined-schedules
|
See: https://jkaninda.github.io/mysql-bkup/reference/#predefined-schedules
|
||||||
|
|
||||||
|
|||||||
@@ -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", "3306")
|
||||||
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")
|
||||||
|
|||||||
@@ -180,3 +180,10 @@ 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
|
||||||
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user