diff --git a/.gitignore b/.gitignore index 6c72b5f..c96ea48 100644 --- a/.gitignore +++ b/.gitignore @@ -30,6 +30,9 @@ lib*.prl lib*.a lib*.prl +*.sql + # FIXME: Why are these files created? \\ */target_wrapper.sh + diff --git a/backups/README.md b/backups/README.md new file mode 100644 index 0000000..fb9ab23 --- /dev/null +++ b/backups/README.md @@ -0,0 +1,2 @@ +This directory contains the backups for the MySQL database. + diff --git a/docker-compose.yml b/docker-compose.yml index 5345afc..80010ef 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -5,6 +5,21 @@ version: '3' services: + cron: + build: ./mysqldump + # image: schnitzler/mysqldump + restart: always + volumes: + - ./mysqldump/crontab:/var/spool/cron/crontabs/root + - ./mysqldump/backup.sh:/usr/local/bin/backup.sh + - ./backups:/backups + command: ["-l", "8", "-d", "8"] + environment: + MYSQL_HOST: 'db' + MYSQL_USER: 'admin' + MYSQL_PASSWORD: 'secret' + MYSQL_DATABASE: 'mpop_database' + phpmyadmin: image: phpmyadmin/phpmyadmin environment: diff --git a/mysqldump/Dockerfile b/mysqldump/Dockerfile index e69de29..bd8bc42 100644 --- a/mysqldump/Dockerfile +++ b/mysqldump/Dockerfile @@ -0,0 +1,5 @@ +FROM alpine:3.9 + +RUN apk add --no-cache mysql-client +ENTRYPOINT ["crond", "-f"] + diff --git a/mysqldump/backup.sh b/mysqldump/backup.sh new file mode 100755 index 0000000..df51567 --- /dev/null +++ b/mysqldump/backup.sh @@ -0,0 +1,13 @@ +#!/bin/bash + +FILENAME=${MYSQL_DATABASE}-$(date +%Y-%m-%d_%Hh%Mm%S).sql + +set -o verbose + +mysqldump \ + --host=${MYSQL_HOST} \ + --user=${MYSQL_USER} \ + --password=${MYSQL_PASSWORD} \ + --lock-tables=false \ + ${MYSQL_DATABASE} > /backups/${FILENAME} + diff --git a/mysqldump/crontab b/mysqldump/crontab new file mode 100644 index 0000000..c80c9c3 --- /dev/null +++ b/mysqldump/crontab @@ -0,0 +1,4 @@ +#minute hour day month week command +#0 0 * * * /usr/local/bin/backup.sh +* * * * * /usr/local/bin/backup.sh +