added auto backup
This commit is contained in:
1 parent
cac358f46e
commit
405f0500fd
5 files changed
+105
-3
No files matched your search
@@ -0,0 +1 @@
|
|||||||
|
data/
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
data/
|
||||||
+6
-2
@@ -1,9 +1,13 @@
|
|||||||
FROM alpine:3.6
|
# use edge image for higher client versions
|
||||||
|
FROM alpine:edge
|
||||||
|
|
||||||
MAINTAINER Benjamin Böhmke <benjamin@boehmke.net>
|
MAINTAINER Benjamin Böhmke <benjamin@boehmke.net>
|
||||||
|
|
||||||
RUN apk add --no-cache mysql-client postgresql-client postgresql-bdr
|
RUN apk add --no-cache mysql-client postgresql-client
|
||||||
|
|
||||||
ADD entrypoint.sh /entrypoint.sh
|
ADD entrypoint.sh /entrypoint.sh
|
||||||
|
|
||||||
|
VOLUME /backup/
|
||||||
|
|
||||||
ENTRYPOINT ["/entrypoint.sh"]
|
ENTRYPOINT ["/entrypoint.sh"]
|
||||||
CMD ["app:init"]
|
CMD ["app:init"]
|
||||||
@@ -0,0 +1,49 @@
|
|||||||
|
version: "2"
|
||||||
|
|
||||||
|
services:
|
||||||
|
postgres:
|
||||||
|
container_name: postgres
|
||||||
|
image: postgres
|
||||||
|
environment:
|
||||||
|
- POSTGRES_PASSWORD=root
|
||||||
|
restart: always
|
||||||
|
|
||||||
|
postgres_init:
|
||||||
|
restart: always
|
||||||
|
image: bboehmke/db-helper
|
||||||
|
command: "app:init"
|
||||||
|
volumes:
|
||||||
|
- ./data/backup:/backup
|
||||||
|
environment:
|
||||||
|
# - DEBUG=true
|
||||||
|
- DB_TYPE=postgresql
|
||||||
|
- DB_ROOT_PASSWORD=root
|
||||||
|
- DB_HOST=postgres
|
||||||
|
- DB_DATABASE=postgres_database
|
||||||
|
- DB_USER=postgres_database
|
||||||
|
- DB_PASSWORD=postgres_database
|
||||||
|
- BACKUP_SCHEDULE=15min
|
||||||
|
|
||||||
|
|
||||||
|
mariadb:
|
||||||
|
container_name: mariadb
|
||||||
|
image: mariadb
|
||||||
|
environment:
|
||||||
|
- MYSQL_ROOT_PASSWORD=root
|
||||||
|
restart: always
|
||||||
|
|
||||||
|
mysql_init:
|
||||||
|
restart: always
|
||||||
|
image: bboehmke/db-helper
|
||||||
|
command: "app:init"
|
||||||
|
volumes:
|
||||||
|
- ./data/backup:/backup
|
||||||
|
environment:
|
||||||
|
# - DEBUG=true
|
||||||
|
- DB_TYPE=mysql
|
||||||
|
- DB_ROOT_PASSWORD=root
|
||||||
|
- DB_HOST=mariadb
|
||||||
|
- DB_DATABASE=mysql_database
|
||||||
|
- DB_USER=mysql_database
|
||||||
|
- DB_PASSWORD=mysql_database
|
||||||
|
- BACKUP_SCHEDULE=15min
|
||||||
+48
-1
@@ -1,6 +1,9 @@
|
|||||||
#!/bin/sh
|
#!/bin/sh
|
||||||
set -e
|
set -e
|
||||||
|
|
||||||
|
if [[ $DEBUG == true ]]; then
|
||||||
|
set -x
|
||||||
|
fi
|
||||||
|
|
||||||
case ${DB_TYPE} in
|
case ${DB_TYPE} in
|
||||||
postgresql)
|
postgresql)
|
||||||
@@ -87,7 +90,27 @@ postgresql_init() {
|
|||||||
psql -h$DB_HOST -p $DB_PORT -U$DB_ROOT_USER -tc "GRANT ALL PRIVILEGES ON DATABASE $DB_DATABASE to $DB_USER;" > /dev/null
|
psql -h$DB_HOST -p $DB_PORT -U$DB_ROOT_USER -tc "GRANT ALL PRIVILEGES ON DATABASE $DB_DATABASE to $DB_USER;" > /dev/null
|
||||||
|
|
||||||
# TODO make this configurable
|
# TODO make this configurable
|
||||||
psql -h$DB_HOST -p $DB_PORT -U$DB_ROOT_USER -d $DB_DATABASE -tc "CREATE EXTENSION pg_trgm;" > /dev/null 2> /dev/null
|
psql -h$DB_HOST -p $DB_PORT -U$DB_ROOT_USER -d $DB_DATABASE -tc "CREATE EXTENSION pg_trgm;" > /dev/null 2> /dev/null || true
|
||||||
|
}
|
||||||
|
|
||||||
|
postgresql_auto_backup() {
|
||||||
|
case ${BACKUP_SCHEDULE} in
|
||||||
|
15min|hourly|daily|weekly|monthly)
|
||||||
|
# create backup dir
|
||||||
|
mkdir -p /backup
|
||||||
|
|
||||||
|
# create backup script
|
||||||
|
cat > /etc/periodic/${BACKUP_SCHEDULE}/backup <<EOF
|
||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
export PGPASSWORD=$DB_ROOT_PASSWORD
|
||||||
|
|
||||||
|
now=\$(date +"%Y%d%m_%H%M%S")
|
||||||
|
pg_dump -h ${DB_HOST} -p ${DB_PORT} -U ${DB_ROOT_USER} ${DB_DATABASE} | gzip -c > /backup/${DB_DATABASE}_\${now}.sql.gz
|
||||||
|
EOF
|
||||||
|
chmod +x /etc/periodic/${BACKUP_SCHEDULE}/backup
|
||||||
|
;;
|
||||||
|
esac
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@@ -121,6 +144,24 @@ mysql_init() {
|
|||||||
mysql -P $DB_PORT -u$DB_ROOT_USER -p$DB_ROOT_PASSWORD -h$DB_HOST -Bse "GRANT ALL PRIVILEGES ON \`$DB_DATABASE\`.* TO '$DB_USER'@'%';"
|
mysql -P $DB_PORT -u$DB_ROOT_USER -p$DB_ROOT_PASSWORD -h$DB_HOST -Bse "GRANT ALL PRIVILEGES ON \`$DB_DATABASE\`.* TO '$DB_USER'@'%';"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
mysql_auto_backup() {
|
||||||
|
case ${BACKUP_SCHEDULE} in
|
||||||
|
15min|hourly|daily|weekly|monthly)
|
||||||
|
# create backup dir
|
||||||
|
mkdir -p /backup
|
||||||
|
|
||||||
|
# create backup script
|
||||||
|
cat > /etc/periodic/${BACKUP_SCHEDULE}/backup <<EOF
|
||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
now=\$(date +"%Y%d%m_%H%M%S")
|
||||||
|
mysqldump -h ${DB_HOST} -P ${DB_PORT} -u ${DB_ROOT_USER} -p$DB_ROOT_PASSWORD ${DB_DATABASE} | gzip -c > /backup/${DB_DATABASE}_\${now}.sql.gz
|
||||||
|
EOF
|
||||||
|
chmod +x /etc/periodic/${BACKUP_SCHEDULE}/backup
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
case ${1} in
|
case ${1} in
|
||||||
app:init|app:clear_init)
|
app:init|app:clear_init)
|
||||||
@@ -137,6 +178,8 @@ case ${1} in
|
|||||||
postgresql_clear_init
|
postgresql_clear_init
|
||||||
;;
|
;;
|
||||||
esac
|
esac
|
||||||
|
|
||||||
|
postgresql_auto_backup
|
||||||
;;
|
;;
|
||||||
|
|
||||||
mysql)
|
mysql)
|
||||||
@@ -149,8 +192,12 @@ case ${1} in
|
|||||||
mysql_clear_init
|
mysql_clear_init
|
||||||
;;
|
;;
|
||||||
esac
|
esac
|
||||||
|
|
||||||
|
mysql_auto_backup
|
||||||
;;
|
;;
|
||||||
esac
|
esac
|
||||||
|
|
||||||
|
exec /usr/sbin/crond -f
|
||||||
;;
|
;;
|
||||||
*)
|
*)
|
||||||
exec "$@"
|
exec "$@"
|
||||||
|
|||||||
Reference in new issue
Block a user