diff --git a/backup.sh b/backup.sh
index 23d213decff125ffe0cf6c9d886c95215d8cfcf4..f5a5707b9eb255bf66146f4d13d6646e39f9578f 100644
--- a/backup.sh
+++ b/backup.sh
@@ -8,7 +8,19 @@ if [ ! -d "backups" ]; then
 fi
 
 out="backups/keycloak_$(date +%Y%m%d_%H%M).tar.gz"
-tar -czf $out keycloak_db
+. .env
+
+if command -v docker-compose &> /dev/null; then
+    echo "Usage of 'docker-compose'"
+    docker-compose exec -T db mysqldump --all-databases -u root -p$MARIADB_PASS  --default-character-set=utf8 | gzip > $out
+elif docker compose version &> /dev/null; then
+    echo "Usage of 'docker compose'"
+    docker compose exec -T db mysqldump --all-databases -u root -p$MARIADB_PASS  --default-character-set=utf8 | gzip > $out
+else
+    echo "'docker compose' and 'docker-compose' not found"
+    exit 1
+fi
+
 
 ls -lh $out
 echo "Done"