diff --git a/scripts/db-backup.sh b/scripts/db-backup.sh index 17c9a17..17effd4 100755 --- a/scripts/db-backup.sh +++ b/scripts/db-backup.sh @@ -66,6 +66,9 @@ env_get() { load_target() { local target="$1" + DB_DOCKER_SERVICE="" + DB_DOCKER_PORT="" + case "$target" in app) DB_HOST="$(env_get DB_HOST "$ENV_FILE")" @@ -73,6 +76,10 @@ load_target() { DB_NAME="$(env_get DB_DATABASE "$ENV_FILE")" DB_USER="$(env_get DB_USERNAME "$ENV_FILE")" DB_PASS="$(env_get DB_PASSWORD "$ENV_FILE")" + if [[ "$DB_HOST" == "mysql" ]]; then + DB_DOCKER_SERVICE="mysql" + DB_DOCKER_PORT="${DB_PORT:-3306}" + fi ;; auth) DB_HOST="$(env_get AZEROTHCORE_AUTH_DB_HOST "$ENV_FILE")" @@ -140,6 +147,23 @@ run_mysql_tool() { require_cmd docker + if [[ -n "${DB_DOCKER_SERVICE:-}" ]]; then + local pwd_value="" + if [[ -n "${DB_PASS:-}" && "$DB_PASS" != "null" ]]; then + pwd_value="$DB_PASS" + fi + + docker compose exec -T \ + -e MYSQL_PWD="$pwd_value" \ + "$DB_DOCKER_SERVICE" \ + "$tool" \ + -h127.0.0.1 \ + -P"${DB_DOCKER_PORT:-3306}" \ + -u"$DB_USER" \ + "$@" + return + fi + local target_host="$DB_HOST" if [[ "$target_host" == "127.0.0.1" || "$target_host" == "localhost" ]]; then target_host="host.docker.internal"