Go to file
Einar Forselv cf402d77ed Simplify README 2019-12-08 14:57:17 +01:00
docs Bump version 2019-12-08 03:32:14 +01:00
extras Bump version 2019-12-06 09:09:05 +01:00
src Make crontab configurable 2019-12-08 06:38:56 +01:00
.gitignore Fix broken travis config 2019-12-07 09:05:48 +01:00
.travis.yml Incorrect pip install in travis.yml 2019-12-07 09:12:01 +01:00
LICENSE Create LICENSE 2019-12-05 00:58:32 +01:00
README.md Simplify README 2019-12-08 14:57:17 +01:00
docker-compose.yaml More comments in dev compose file 2019-12-06 10:53:51 +01:00
pytest.ini Fully working tox run 2019-12-05 11:23:33 +01:00
restic_compose_backup.env Make crontab configurable 2019-12-08 06:38:56 +01:00
tox.ini Incorrect requirements dir after moving test package 2019-12-06 17:19:06 +01:00

README.md

restic-compose-backup

docs

Automatically detects and backs up volumes, mysql, mariadb and postgres databases in a docker-compose setup. Currently tested with docker-ce 17, 18 and 19.

Backup using restic for a docker-compose setup.

Features:

  • Backs up docker volumes or host binds
  • Backs up postgres, mariadb and mysql databases
  • Notifications over mail/smtp or Discord webhooks

Please report issus on github.

Install

docker pull zettaio/restic-compose-backup

Configuration (env vars)

Minimum configuration (env vars)

RESTIC_REPOSITORY
RESTIC_PASSWORD

More config options can be found in the documentation.

Restic backend specific env vars : https://restic.readthedocs.io/en/stable/040_backup.html#environment-variables

Compose Example

restic-backup.env

RESTIC_REPOSITORY=<whatever backend restic supports>
RESTIC_PASSWORD=hopefullyasecturepw
# snapshot prune rules
RESTIC_KEEP_DAILY=7
RESTIC_KEEP_WEEKLY=4
RESTIC_KEEP_MONTHLY=12
RESTIC_KEEP_YEARLY=3
# Cron schedule. Run every day at 1am
CRON_SCHEDULE="0 1 * * *"

docker-compose.yaml

version: '3'
services:
  # The backup service
  backup:
    image: zettaio/restic-compose-backup:<version>
    env_file:
      - restic-backup.env
    volumes:
      # We need to communicate with docker
      - /var/run/docker.sock:/tmp/docker.sock:ro
      # Persistent storage of restic cache (greatly speeds up all restic operations)
      - cache:/cache
  example:
    image: some_image
    labels:
      # Enables backup of the volumes below
      restic-compose-backup.volumes: true
    volumes:
      - media:/srv/media
      - /srv/files:/srv/files
  mariadb:
    image: mariadb:10
    labels:
      # Enables backup of this database
      restic-compose-backup.mariadb: true
    env_file:
      mariadb-credentials.env
    volumes:
      - mysqldata:/var/lib/mysql
  mysql:
    image: mysql:5
    labels:
      # Enables backup of this database
      restic-compose-backup.mysql: true
    env_file:
      mysql-credentials.env
    volumes:
      - mysqldata:/var/lib/mysql

  postgres:
    image: postgres
    labels:
      # Enables backup of this database
      restic-compose-backup.postgres: true
    env_file:
      postgres-credentials.env
    volumes:
      - pgdata:/var/lib/postgresql/data

volumes:
  media:
  mysqldata:
  mariadbdata:
  pgdata:
  cache:

Running Tests

pip install -e ./src/
pip install -r src/tests/requirements.txt
tox

Building Docs

pip install -r docs/requirements.txt
python src/setup.py build_sphinx

Contributing

Contributions are welcome regardless of experience level. Don't hesitate submitting issues, opening partial or completed pull requests.