Исправлена логика dump-db.sh для работы с удаленными хостами
All checks were successful
Build and Push Docker Image / build-and-push (push) Successful in 15s
All checks were successful
Build and Push Docker Image / build-and-push (push) Successful in 15s
This commit is contained in:
59
dump-db.sh
59
dump-db.sh
@@ -65,27 +65,46 @@ echo " Хост: $DB_HOST:$DB_PORT"
|
||||
echo " Пользователь: $DB_USER"
|
||||
echo " Файл: $DUMP_PATH"
|
||||
|
||||
# Создаем дамп через docker-compose, если контейнер запущен
|
||||
if docker-compose ps db 2>/dev/null | grep -q "Up"; then
|
||||
echo " Используется docker-compose..."
|
||||
docker-compose exec -T db pg_dump -U "$DB_USER" -d "$DB_NAME" > "$DUMP_PATH"
|
||||
elif command -v pg_dump &> /dev/null; then
|
||||
# Или напрямую через pg_dump, если БД доступна локально
|
||||
echo " Используется локальный pg_dump..."
|
||||
PGPASSWORD="$DB_PASSWORD" pg_dump -h "$DB_HOST" -p "$DB_PORT" -U "$DB_USER" -d "$DB_NAME" > "$DUMP_PATH"
|
||||
elif command -v docker &> /dev/null; then
|
||||
# Используем Docker образ postgres для создания дампа
|
||||
# Используем latest для совместимости с разными версиями сервера
|
||||
echo " Используется Docker (postgres:latest)..."
|
||||
# Используем --network host для доступа к удаленным хостам
|
||||
docker run --rm -i --network host \
|
||||
-e PGPASSWORD="$DB_PASSWORD" \
|
||||
postgres:latest \
|
||||
pg_dump -h "$DB_HOST" -p "$DB_PORT" -U "$DB_USER" -d "$DB_NAME" > "$DUMP_PATH"
|
||||
# Создаем дамп через docker-compose, если контейнер запущен И хост локальный
|
||||
if [ "$DB_HOST" = "localhost" ] || [ "$DB_HOST" = "127.0.0.1" ] || [ -z "$DB_HOST" ]; then
|
||||
if docker-compose ps db 2>/dev/null | grep -q "Up"; then
|
||||
echo " Используется docker-compose..."
|
||||
docker-compose exec -T db pg_dump -U "$DB_USER" -d "$DB_NAME" > "$DUMP_PATH"
|
||||
elif command -v pg_dump &> /dev/null; then
|
||||
# Или напрямую через pg_dump, если БД доступна локально
|
||||
echo " Используется локальный pg_dump..."
|
||||
PGPASSWORD="$DB_PASSWORD" pg_dump -h "$DB_HOST" -p "$DB_PORT" -U "$DB_USER" -d "$DB_NAME" > "$DUMP_PATH"
|
||||
elif command -v docker &> /dev/null; then
|
||||
# Используем Docker образ postgres для создания дампа
|
||||
echo " Используется Docker (postgres:latest)..."
|
||||
docker run --rm -i --network host \
|
||||
-e PGPASSWORD="$DB_PASSWORD" \
|
||||
postgres:latest \
|
||||
pg_dump -h "$DB_HOST" -p "$DB_PORT" -U "$DB_USER" -d "$DB_NAME" > "$DUMP_PATH"
|
||||
else
|
||||
echo "❌ Ошибка: pg_dump не найден, docker-compose не запущен и Docker недоступен"
|
||||
echo " Установите PostgreSQL клиент или Docker"
|
||||
exit 1
|
||||
fi
|
||||
else
|
||||
echo "❌ Ошибка: pg_dump не найден, docker-compose не запущен и Docker недоступен"
|
||||
echo " Установите PostgreSQL клиент или Docker"
|
||||
exit 1
|
||||
# Для удаленных хостов используем pg_dump или Docker
|
||||
if command -v pg_dump &> /dev/null; then
|
||||
echo " Используется локальный pg_dump..."
|
||||
PGPASSWORD="$DB_PASSWORD" pg_dump -h "$DB_HOST" -p "$DB_PORT" -U "$DB_USER" -d "$DB_NAME" > "$DUMP_PATH"
|
||||
elif command -v docker &> /dev/null; then
|
||||
# Используем Docker образ postgres для создания дампа
|
||||
# Используем latest для совместимости с разными версиями сервера
|
||||
echo " Используется Docker (postgres:latest)..."
|
||||
# Используем --network host для доступа к удаленным хостам
|
||||
docker run --rm -i --network host \
|
||||
-e PGPASSWORD="$DB_PASSWORD" \
|
||||
postgres:latest \
|
||||
pg_dump -h "$DB_HOST" -p "$DB_PORT" -U "$DB_USER" -d "$DB_NAME" > "$DUMP_PATH"
|
||||
else
|
||||
echo "❌ Ошибка: pg_dump не найден и Docker недоступен"
|
||||
echo " Установите PostgreSQL клиент или Docker"
|
||||
exit 1
|
||||
fi
|
||||
fi
|
||||
|
||||
# Сжимаем дамп
|
||||
|
||||
Reference in New Issue
Block a user