diff --git a/config/mysql/Dockerfile b/config/mysql/Dockerfile new file mode 100644 index 0000000..762bafa --- /dev/null +++ b/config/mysql/Dockerfile @@ -0,0 +1,10 @@ +FROM mysql:5 +ENV force_color_prompt yes + +RUN apt-get update; +RUN apt-get install -y cron; + +ENTRYPOINT \ + service cron start; \ + printenv | grep -v "no_proxy" >> /etc/environment; \ + docker-entrypoint.sh mysqld \ No newline at end of file diff --git a/config/mysql/backup-script b/config/mysql/backup-script new file mode 100644 index 0000000..2f6ca56 --- /dev/null +++ b/config/mysql/backup-script @@ -0,0 +1,28 @@ +#!/bin/sh + +FREQUENTY=`basename "$0"` +TIMESTAMP=$(date +"%Y-%m-%d") + +case $FREQUENTY in + + daily) + DAYS=6 + ;; + + weekly) + DAYS=30 + find /backups -type f -name $TIMESTAMP-daily.sql.gz -delete + ;; + + monthly) + DAYS=122 + find /backups -type f -name $TIMESTAMP-weekly.sql.gz -delete + ;; +esac + +mysqldump -u ${MYSQL_USER} -p${MYSQL_PASSWORD} ${MYSQL_DATABASE} | gzip > /backups/$TIMESTAMP-$FREQUENTY.sql.gz + +# Remove old backups +find /backups -mtime +${DAYS} -type f -name *-$FREQUENTY.sql.gz -delete + +exit 0; \ No newline at end of file diff --git a/docker-compose.yml b/docker-compose.yml index 3274bb0..0739d37 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -40,7 +40,8 @@ services: - "in5.localhost:192.168.0.124 " #host and ip db: - image: mysql:5 + build: + context: ./config/mysql ports: - "3305:3306" restart: always @@ -51,6 +52,12 @@ services: - MYSQL_DATABASE=ninja volumes: - ./docker/mysql/data:/var/lib/mysql:rw,delegated + + # comment out next 4 lines if you don't want auto sql backups + - ./docker/mysql/bak:/backups:rw + - ./config/mysql/backup-script:/etc/cron.daily/daily:ro + - ./config/mysql/backup-script:/etc/cron.weekly/weekly:ro + - ./config/mysql/backup-script:/etc/cron.monthly/monthly:ro networks: - invoiceninja extra_hosts: