Skip to content

Commit 6d6db70

Browse files
authored
Merge pull request #63 from jkaninda/develop
Develop
2 parents 59a1360 + d90647a commit 6d6db70

17 files changed

+292
-89
lines changed

Makefile

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -18,31 +18,31 @@ compile:
1818
docker-build:
1919
docker build -f docker/Dockerfile -t jkaninda/mysql-bkup:latest .
2020

21-
docker-run: docker-build
22-
docker run --rm --network web --name mysql-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
21+
docker-run: #docker-build
22+
docker run --rm --network web --name mysql-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
2323
docker-restore: docker-build
24-
docker run --rm --network web --name mysql-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}
24+
docker run --rm --network web --name mysql-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}
2525

2626

2727
docker-run-scheduled: #docker-build
28-
docker run --rm --network web --name mysql-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 "* * * * *"
28+
docker run --rm --network web --name mysql-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 "* * * * *"
2929

3030

31-
docker-run-scheduled-s3: #docker-build
32-
docker run --rm --network web --name mysql-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} bkup backup --storage s3 --mode scheduled --path /custom-path --period "* * * * *"
31+
docker-run-scheduled-s3: docker-build
32+
docker run --rm --network web --name mysql-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 "* * * * *"
3333

3434
docker-run-s3: docker-build
35-
docker run --rm --network web --name mysql-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 "AWS_S3_ENDPOINT=${AWS_S3_ENDPOINT}" -e "AWS_REGION=eu2" -e "GPG_PASSPHRASE=${GPG_PASSPHRASE}" ${IMAGE_NAME} bkup backup --storage s3 --path /custom-path
35+
docker run --rm --network web --name mysql-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 "AWS_S3_ENDPOINT=${AWS_S3_ENDPOINT}" -e "AWS_REGION=eu2" -e "GPG_PASSPHRASE=${GPG_PASSPHRASE}" ${IMAGE_NAME} backup --storage s3 --path /custom-path
3636

3737

3838
docker-restore-s3: docker-build
39-
docker run --rm --network web --name mysql-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=${AWS_S3_ENDPOINT}" -e "AWS_REGION=eu2" -e "GPG_PASSPHRASE=${GPG_PASSPHRASE}" ${IMAGE_NAME} bkup restore --storage s3 -f ${FILE_NAME} --path /custom-path
39+
docker run --rm --network web --name mysql-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=${AWS_S3_ENDPOINT}" -e "AWS_REGION=eu2" -e "GPG_PASSPHRASE=${GPG_PASSPHRASE}" ${IMAGE_NAME} restore --storage s3 -f ${FILE_NAME} --path /custom-path
4040

41-
docker-run-ssh: #docker-build
42-
docker run --rm --network web --name mysql-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
41+
docker-run-ssh: docker-build
42+
docker run --rm --network web --name mysql-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
4343

4444
docker-restore-ssh: docker-build
45-
docker run --rm --network web --name mysql-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}
45+
docker run --rm --network web --name mysql-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}
4646

4747
run-docs:
4848
cd docs && bundle exec jekyll serve -H 0.0.0.0 -t

README.md

Lines changed: 10 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
# MySQL Backup
2-
mysql-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.
2+
MySQL Backup is a Docker container image that can be used to backup and restore MySQL database. It supports local storage, AWS S3 or any S3 Alternatives for Object Storage, and SSH compatible storage.
33
It also supports __encrypting__ your backups using GPG.
44

55
The [jkaninda/mysql-bkup](https://hub.docker.com/r/jkaninda/mysql-bkup) Docker image can be deployed on Docker, Docker Swarm and Kubernetes.
@@ -13,6 +13,7 @@ It also supports __encrypting__ your backups using GPG.
1313
![Docker Pulls](https://img.shields.io/docker/pulls/jkaninda/mysql-bkup?style=flat-square)
1414

1515
- Docker
16+
- Docker Swarm
1617
- Kubernetes
1718

1819
## Documentation is found at <https://jkaninda.github.io/mysql-bkup>
@@ -36,15 +37,15 @@ It also supports __encrypting__ your backups using GPG.
3637

3738
### Simple backup using Docker CLI
3839

39-
To run a one time backup, bind your local volume to `/backup` in the container and run the `mysql-bkup backup` command:
40+
To run a one time backup, bind your local volume to `/backup` in the container and run the `backup` command:
4041

4142
```shell
4243
docker run --rm --network your_network_name \
4344
-v $PWD/backup:/backup/ \
4445
-e "DB_HOST=dbhost" \
4546
-e "DB_USERNAME=username" \
4647
-e "DB_PASSWORD=password" \
47-
jkaninda/mysql-bkup mysql-bkup backup -d database_name
48+
jkaninda/mysql-bkup backup -d database_name
4849
```
4950

5051
Alternatively, pass a `--env-file` in order to use a full config as described below.
@@ -98,6 +99,10 @@ spec:
9899
spec:
99100
containers:
100101
- name: mysql-bkup
102+
# In production, it is advised to lock your image tag to a proper
103+
# release version instead of using `latest`.
104+
# Check https://github.com/jkaninda/mysql-bkup/releases
105+
# for a list of available releases.
101106
image: jkaninda/mysql-bkup
102107
command:
103108
- /bin/sh
@@ -135,8 +140,8 @@ This Docker image is published to both Docker Hub and the GitHub container regis
135140
Depending on your preferences and needs, you can reference both `jkaninda/mysql-bkup` as well as `ghcr.io/jkaninda/mysql-bkup`:
136141

137142
```
138-
docker pull jkaninda/mysql-bkup:v1.2.0
139-
docker pull ghcr.io/jkaninda/mysql-bkup:v1.2.0
143+
docker pull jkaninda/mysql-bkup
144+
docker pull ghcr.io/jkaninda/mysql-bkup
140145
```
141146
142147
Documentation references Docker Hub, but all examples will work using ghcr.io just as well.

docker/Dockerfile

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@ ENV SSH_HOST_NAME=""
3131
ENV SSH_IDENTIFY_FILE=""
3232
ENV SSH_PORT="22"
3333
ARG DEBIAN_FRONTEND=noninteractive
34-
ENV VERSION="v1.0"
34+
ENV VERSION="v1.2.1"
3535
ARG WORKDIR="/app"
3636
ARG BACKUPDIR="/backup"
3737
ARG BACKUP_TMP_DIR="/tmp/backup"
@@ -64,4 +64,5 @@ RUN ln -s /usr/local/bin/mysql-bkup /usr/local/bin/bkup
6464

6565
ADD docker/supervisord.conf /etc/supervisor/supervisord.conf
6666

67-
WORKDIR $WORKDIR
67+
WORKDIR $WORKDIR
68+
ENTRYPOINT ["/usr/local/bin/mysql-bkup"]

docs/how-tos/backup-to-s3.md

Lines changed: 2 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -22,10 +22,7 @@ services:
2222
# for a list of available releases.
2323
image: jkaninda/mysql-bkup
2424
container_name: mysql-bkup
25-
command:
26-
- /bin/sh
27-
- -c
28-
- mysql-bkup backup --storage s3 -d database --path /my-custom-path
25+
command: backup --storage s3 -d database --path /my-custom-path
2926
environment:
3027
- DB_PORT=3306
3128
- DB_HOST=mysql
@@ -62,10 +59,7 @@ services:
6259
# for a list of available releases.
6360
image: jkaninda/mysql-bkup
6461
container_name: mysql-bkup
65-
command:
66-
- /bin/sh
67-
- -c
68-
- mysql-bkup backup --storage s3 -d my-database --mode scheduled --period "0 1 * * *"
62+
command: backup --storage s3 -d my-database --mode scheduled --period "0 1 * * *"
6963
environment:
7064
- DB_PORT=3306
7165
- DB_HOST=mysql

docs/how-tos/backup-to-ssh.md

Lines changed: 2 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -23,10 +23,7 @@ services:
2323
# for a list of available releases.
2424
image: jkaninda/mysql-bkup
2525
container_name: mysql-bkup
26-
command:
27-
- /bin/sh
28-
- -c
29-
- mysql-bkup backup --storage remote -d database
26+
command: backup --storage remote -d database
3027
volumes:
3128
- ./id_ed25519:/tmp/id_ed25519"
3229
environment:
@@ -66,10 +63,7 @@ services:
6663
# for a list of available releases.
6764
image: jkaninda/mysql-bkup
6865
container_name: mysql-bkup
69-
command:
70-
- /bin/sh
71-
- -c
72-
- mysql-bkup backup -d database --storage ssh --mode scheduled --period "0 1 * * *"
66+
command: backup -d database --storage ssh --mode scheduled --period "0 1 * * *"
7367
volumes:
7468
- ./id_ed25519:/tmp/id_ed25519"
7569
environment:

docs/how-tos/backup.md

Lines changed: 4 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ nav_order: 1
77

88
# Backup database
99

10-
To backup the database, you need to add `backup` subcommand to `mysql-bkup` or `bkup`.
10+
To backup the database, you need to add `backup` command.
1111

1212
{: .note }
1313
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.
@@ -27,10 +27,7 @@ services:
2727
# for a list of available releases.
2828
image: jkaninda/mysql-bkup
2929
container_name: mysql-bkup
30-
command:
31-
- /bin/sh
32-
- -c
33-
- mysql-bkup backup -d database
30+
command: backup -d database
3431
volumes:
3532
- ./backup:/backup
3633
environment:
@@ -54,7 +51,7 @@ networks:
5451
-e "DB_HOST=dbhost" \
5552
-e "DB_USERNAME=username" \
5653
-e "DB_PASSWORD=password" \
57-
jkaninda/mysql-bkup mysql-bkup backup -d database_name
54+
jkaninda/mysql-bkup backup -d database_name
5855
```
5956

6057
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 +65,7 @@ services:
6865
# for a list of available releases.
6966
image: jkaninda/mysql-bkup
7067
container_name: mysql-bkup
71-
command:
72-
- /bin/sh
73-
- -c
74-
- mysql-bkup backup -d database --mode scheduled --period "0 1 * * *"
68+
command: backup -d database --mode scheduled --period "0 1 * * *"
7569
volumes:
7670
- ./backup:/backup
7771
environment:

0 commit comments

Comments
 (0)