Исправлена логика dump-db.sh для работы с удаленными хостами
All checks were successful
Build and Push Docker Image / build-and-push (push) Successful in 15s

This commit is contained in:
poignatov
2026-01-01 17:04:10 +03:00
parent f8aa81f963
commit 6015b62d29
2 changed files with 39 additions and 83 deletions

View File

@@ -1,63 +0,0 @@
# ============================================
# Единый файл конфигурации для всех проектов
# Backend и Play-Life-Web
# ============================================
# ============================================
# Database Configuration
# ============================================
DB_HOST=localhost
DB_PORT=5432
DB_USER=playeng
DB_PASSWORD=playeng
DB_NAME=playeng
# ============================================
# Backend Server Configuration
# ============================================
# Порт для backend сервера (по умолчанию: 8080)
# В production всегда используется порт 8080 внутри контейнера
PORT=8080
# ============================================
# Play Life Web Configuration
# ============================================
# Порт для frontend приложения play-life-web
WEB_PORT=3001
# ============================================
# Telegram Bot Configuration (optional)
# ============================================
# Get token from @BotFather in Telegram: https://t.me/botfather
# To get chat ID: send a message to your bot, then visit: https://api.telegram.org/bot<YOUR_BOT_TOKEN>/getUpdates
# Look for "chat":{"id":123456789} - that number is your chat ID
TELEGRAM_BOT_TOKEN=your_telegram_bot_token_here
TELEGRAM_CHAT_ID=123456789
# Base URL для автоматической настройки webhook
# Примеры:
# - Для production с HTTPS: https://your-domain.com
# - Для локальной разработки с ngrok: https://abc123.ngrok.io
# - Для прямого доступа на нестандартном порту: http://your-server:8080
# Webhook будет настроен автоматически при старте сервера на: <TELEGRAM_WEBHOOK_BASE_URL>/webhook/telegram
# Если не указан, webhook нужно настраивать вручную
TELEGRAM_WEBHOOK_BASE_URL=https://your-domain.com
# ============================================
# Todoist Webhook Configuration (optional)
# ============================================
# Секрет для проверки подлинности webhook от Todoist
# Если задан, все запросы должны содержать заголовок X-Todoist-Webhook-Secret с этим значением
# Оставьте пустым, если не хотите использовать проверку секрета
TODOIST_WEBHOOK_SECRET=
# ============================================
# Scheduler Configuration
# ============================================
# Часовой пояс для планировщика задач (например: Europe/Moscow, America/New_York, UTC)
# Используется для:
# - Автоматической фиксации целей на неделю каждый понедельник в 6:00
# - Отправки ежедневного отчёта в 23:59
# ВАЖНО: Укажите правильный часовой пояс, иначе задачи будут срабатывать в UTC!
# Список доступных часовых поясов: https://en.wikipedia.org/wiki/List_of_tz_database_time_zones
TIMEZONE=Europe/Moscow

View File

@@ -65,7 +65,8 @@ echo " Хост: $DB_HOST:$DB_PORT"
echo " Пользователь: $DB_USER" echo " Пользователь: $DB_USER"
echo " Файл: $DUMP_PATH" echo " Файл: $DUMP_PATH"
# Создаем дамп через docker-compose, если контейнер запущен # Создаем дамп через 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 if docker-compose ps db 2>/dev/null | grep -q "Up"; then
echo " Используется docker-compose..." echo " Используется docker-compose..."
docker-compose exec -T db pg_dump -U "$DB_USER" -d "$DB_NAME" > "$DUMP_PATH" docker-compose exec -T db pg_dump -U "$DB_USER" -d "$DB_NAME" > "$DUMP_PATH"
@@ -73,6 +74,23 @@ elif command -v pg_dump &> /dev/null; then
# Или напрямую через pg_dump, если БД доступна локально # Или напрямую через pg_dump, если БД доступна локально
echo " Используется локальный pg_dump..." echo " Используется локальный pg_dump..."
PGPASSWORD="$DB_PASSWORD" pg_dump -h "$DB_HOST" -p "$DB_PORT" -U "$DB_USER" -d "$DB_NAME" > "$DUMP_PATH" 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
# Для удаленных хостов используем 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 elif command -v docker &> /dev/null; then
# Используем Docker образ postgres для создания дампа # Используем Docker образ postgres для создания дампа
# Используем latest для совместимости с разными версиями сервера # Используем latest для совместимости с разными версиями сервера
@@ -83,10 +101,11 @@ elif command -v docker &> /dev/null; then
postgres:latest \ postgres:latest \
pg_dump -h "$DB_HOST" -p "$DB_PORT" -U "$DB_USER" -d "$DB_NAME" > "$DUMP_PATH" pg_dump -h "$DB_HOST" -p "$DB_PORT" -U "$DB_USER" -d "$DB_NAME" > "$DUMP_PATH"
else else
echo "❌ Ошибка: pg_dump не найден, docker-compose не запущен и Docker недоступен" echo "❌ Ошибка: pg_dump не найден и Docker недоступен"
echo " Установите PostgreSQL клиент или Docker" echo " Установите PostgreSQL клиент или Docker"
exit 1 exit 1
fi fi
fi
# Сжимаем дамп # Сжимаем дамп
echo " Сжатие дампа..." echo " Сжатие дампа..."