4b9748a0c8 | ||
---|---|---|
restic_volume_backup | ||
tests | ||
.dockerignore | ||
.gitignore | ||
Dockerfile | ||
README.md | ||
crontab | ||
docker-compose.yaml | ||
entrypoint.sh | ||
pytest.ini | ||
restic_volume_backup.env | ||
setup.py | ||
test.sh |
README.md
restic-volume-backup
WORK IN PROGRESS
Backup using https://restic.net/ for a docker-compose setup.
Automatically detects and backs up volumes in a docker-compose setup. This includes both host mapped volumes and actual docker volumes.
- Cron triggers backup
- Volumes for all running containers are backed up
Configuration
Required env variables for restic:
RESTIC_REPOSITORY
RESTIC_PASSWORD
Backend specific env vars : https://restic.readthedocs.io/en/stable/040_backup.html#environment-variables
Example compose setup:
version: '3'
services:
backup:
build: restic-volume-backup
environment:
- RESTIC_REPOSITORY=<whatever restic supports>
- RESTIC_PASSWORD=hopefullyasecturepw
env_file:
- some_other_vars.env
volumes:
- /var/run/docker.sock:/tmp/docker.sock:ro
example:
image: some_image
# Enable volume backup with label
labels:
restic-volume-backup.enabled: true
# These volumes will be backed up
volumes:
# Docker volume
- media:/srv/media
# Host map
- /srv/files:/srv/files
volumes:
media:
Include
example:
image: some_image
labels:
restic-volume-backup.enabled: true
restic-volume-backup.include: "files,data"
volumes:
# Source don't match include filter. No backup.
- media:/srv/media
# Matches include filter
- files:/srv/files
- /srv/data:/srv/data
volumes:
media:
files:
Exclude:
example:
image: some_image
labels:
restic-volume-backup.enabled: true
restic-volume-backup.exclude: "media"
volumes:
# Excluded by filter
- media:/srv/media
# Backed up
- files:/srv/files
- /srv/data:/srv/data
volumes:
media:
files:
Running Tests
python setup.py develop
pip install -r tests/requirements.txt
pytest tests
TEMP
mysql://user:pw@host:port/dbname
postgresql://user:pw@host:port/dbname