diff --git a/.gitignore b/.gitignore index 52ca7bd1f29c7c9da49984e56829dfbe46a63636..f412b94b9cd58f30e8949d594ca48ce468b4cb52 100644 --- a/.gitignore +++ b/.gitignore @@ -2,3 +2,4 @@ keycloak_db/ themes/* !themes/custom-theme-template +backups/* diff --git a/backup.sh b/backup.sh new file mode 100644 index 0000000000000000000000000000000000000000..cddb14275c26ef3bcbe4765f7719eb6b98333f95 --- /dev/null +++ b/backup.sh @@ -0,0 +1,36 @@ +#!/bin/bash +echo "Backing up Keycloak DB and config" + + +DIR=$(realpath $(dirname $0)) + +if [ ! -e $DIR/.env ] +then + echo ".env file do not exist" + exit 1 +fi + +. $DIR/.env + +if [ -z "$MARIADB_PASS" ]; then + echo "Error: the MARIADB_PASS variable is not set or is empty." + exit 1 +fi + +mkdir -p $DIR/backups + +out="$DIR/backups/keycloak_$(date +%Y%m%d_%H%M).tar.gz" + +if command -v docker-compose &> /dev/null; then + DOCKER_COMPOSE="docker-compose" +elif docker compose version &> /dev/null; then + DOCKER_COMPOSE="docker compose" +else + echo "'docker compose' and 'docker-compose' not found" + exit 1 +fi + +$DOCKER_COMPOSE exec -T mariadb mysqldump --all-databases -u root -p"$MARIADB_PASS" --default-character-set=utf8 | gzip > "$out" + +ls -lh $out +echo "Done" diff --git a/docker-compose.yml b/docker-compose.yml index 13fa03d86593e80243b6eb071d13072f6a76ca0a..b6793e4d0ba2724c593aaffa08683abf421fc499 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -21,7 +21,7 @@ services: mariadb: image: mariadb:latest - container_name: mariadb + container_name: keycloak_mariadb volumes: - "./keycloak_db:/var/lib/mysql:rw" environment: