backup-docker/README.md
Djeeberjr 818e58f179
All checks were successful
continuous-integration/drone/push Build is passing
big refactor
too lazy to list things
2022-03-27 19:28:00 +02:00

67 lines
1.6 KiB
Markdown

Use [restic](https://restic.net/) together with rclone for a poor mans backup solution.
# Configuration
Environment variables:
`RCLONE_REMOTE` remote for rclone e.g. `gdrive:/backup`
`RCLONE_CONFIG` file path for the rclone config file e.g. `/config/rclone.conf`
`RESTIC_PASSWORD` or `RESTIC_PASSWORD_FILE` password for the repo
`RCLONE_CONFIG_CONTENT` content of the rclone config.
For the database:
`MYSQL_DUMP_DB` all databases comma sperated: `db1,db2`
`MYSQL_HOST`
`MYSQL_USERNAME`
`MYSQL_PASSWORD` or `MYSQL_PASSWORD_FILE`
`POSTGRES_DUMP_DB` all databases comma sperated: `db1,db2`
`POSTGRES_HOST`
`POSTGRES_USERNAME`
`POSTGRES_PASSWORD` or `POSTGRES_PASSWORD_FILE`
Use the `/app/init.sh` script to init a new remote.
# Directorys
`/config` Contains the rclone config. Can also be passed as env var.
`/backup` Contains the mounted volumes as read only
`/restore` Contains volumes to restore
# Usage
Here is an example of the script i use to backup my volumes:
```sh
#!/usr/bin/env sh
set -e
# get all volumes with the "backup.enable" label on it
BACKUP_VOL=$(docker volume ls --filter "label=backup.enable" --format '-v {{ .Name }}:/backup/{{ .Name }}:ro ')
docker run \
--rm \
-e "RCLONE_REMOTE=gdrive:/backup" \
-e "RCLONE_CONFIG=/config/rclone.conf" \
-e "ENC_PASSWORD=MyPassword" \
-e "MYSQL_USERNAME=root" \
-e "MYSQL_PASSWORD=dbPassword" \
-e "MYSQL_DUMP_DB=db1,db2" \
-e "MYSQL_HOST=databaseHost" \
--network "dbNet" \
-v "/var/docker/backup:/config" \
$BACKUP_VOL \
djeeberjr/backup \
backup
```