uchill/rebuild-prod.sh

67 lines
2.2 KiB
Bash
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#!/bin/bash
# Скрипт для полной пересборки PROD окружения с бэкапом БД
set -e
echo "=========================================="
echo "Полная пересборка PROD окружения"
echo "=========================================="
echo ""
echo "⚠️ ВНИМАНИЕ: Это пересоберёт все контейнеры без кэша"
echo ""
cd "$(dirname "$0")"
# Шаг 1: Создать бэкап БД
echo "Шаг 1: Создание бэкапа БД..."
if [ -f "./backup-all-db.sh" ]; then
./backup-all-db.sh
else
echo "⚠️ Скрипт backup-all-db.sh не найден, создаём бэкап вручную..."
mkdir -p ./backups
TIMESTAMP=$(date +%Y%m%d_%H%M%S)
if docker ps | grep -q platform_prod_db; then
docker exec platform_prod_db pg_dumpall -U platform_prod_user -c | gzip > "./backups/platform_prod_db_backup_${TIMESTAMP}.sql.gz"
echo "✓ Бэкап создан: ./backups/platform_prod_db_backup_${TIMESTAMP}.sql.gz"
else
echo "⚠️ Контейнер БД не запущен, пропускаем бэкап"
fi
fi
echo ""
echo "Шаг 2: Остановка контейнеров..."
docker compose down
echo ""
echo "Шаг 3: Пересборка образов без кэша..."
echo "Это может занять несколько минут..."
docker compose build --no-cache --pull
echo ""
echo "Шаг 4: Запуск контейнеров..."
docker compose up -d
echo ""
echo "Шаг 5: Ожидание запуска БД..."
sleep 10
echo ""
echo "Шаг 6: Применение миграций..."
docker exec platform_prod_web python manage.py migrate
echo ""
echo "Шаг 7: Проверка статуса контейнеров..."
docker compose ps
echo ""
echo "=========================================="
echo "✓ Пересборка завершена!"
echo "=========================================="
echo ""
echo "Проверьте логи:"
echo " docker compose logs -f"
echo ""
echo "Если нужно создать суперпользователя:"
echo " docker exec -it platform_prod_web python manage.py createsuperuser"