You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

86 lines
2.6 KiB

2 years ago
# Zero-Fuss Docker Database Backup
2 years ago
[![Build Status](](
2 years ago
A simple tool to create backup of all databases on a host. Supports postgres and mysql/mariadb.
Successor to [this script](
## Usage
Simply point it at your docker socket, mount a backup volume and be done:
docker run -v $PWD/backups:/backups -v /var/run/docker.sock:/var/run/docker.sock kolaente/db-backup
2 years ago
The tool will find all database containers running an official [`mysql`](,
[`mariadb`]( or [`postgres`]( image and
create backups of them periodically. It will also discover new containers
2 years ago
as they are started and won't try to back up containers which have gone away.
When running, all backups for the current run are time-stamped into a sub folder of the backup directory (see below).
### Using labels
To make the backup tool discover other non-offical containers as well you can add the label `de.kolaente.db-backup` to
any container with a value of `mysql` or `postgres` to treat it as a mysql or postgres container.
### Docker Compose
If you're running docker-compose, you can use a setup similar to the following compose file to run the backup:
version: '2'
image: kolaente/db-backup
restart: unless-stopped
- ./backups:/backups
- /etc/localtime:/etc/localtime:ro
- /var/run/docker.sock:/var/run/docker.sock
2 years ago
## Config
All config is done with environment variables.
Where all backup files will be stored.
Default: `/backups`
2 years ago
The cron schedule at which the backup job runs, using the common unix cron syntax.
2 years ago
Check out []( for a nice explanation of the schedule.
Default: `0 */6 * * *` (every 6 hours)
2 years ago
How many backups to keep. If more backups are stored in the backup folder, the oldest one will be removed until there
2 years ago
are only as many as this config variable.
2 years ago
Default: `12`
If provided, the tool will do an empty GET request to this URL to indicate it successfully completed the backup job.
You can use this with other tools to monitor if backups are completed as they should.
## Building from source
This project uses go modules, so you'll need at least go 1.11 to compile it.
Simply run
go build .
to build the binary.