#!/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"