# Инструкция по пересборке PROD и созданию бэкапов ## 🎯 Что нужно сделать: ### 1. Создать бэкап PROD БД ```bash # Сделать скрипты исполняемыми (первый раз) chmod +x /var/www/service/backup/*.sh chmod +x /var/www/service/platform/*.sh # Создать бэкап PROD БД /var/www/service/backup/backup-all-db.sh ``` Это создаст бэкап: - `/var/www/platform/prod/backups/platform_prod_db_YYYYMMDD_HHMMSS.sql.gz` **Примечание:** DEV БД не бэкапится, так как это окружение разработки. ### 2. Пересобрать PROD окружение ```bash # Автоматическая пересборка (с бэкапом) /var/www/service/platform/rebuild-prod.sh ``` Или вручную: ```bash cd /var/www/platform/prod # Остановить контейнеры docker compose down # Пересобрать без кэша docker compose build --no-cache --pull # Запустить docker compose up -d # Подождать запуска БД sleep 10 # Применить миграции docker exec platform_prod_web python manage.py migrate # Проверить статус docker compose ps ``` ### 3. Проверить, что всё работает ```bash # Проверить логи docker compose logs -f # Проверить подключение к БД docker exec platform_prod_web python manage.py shell -c "from django.db import connection; print('DB:', connection.settings_dict['NAME'])" # Проверить количество пользователей (если таблица существует) docker exec platform_prod_db psql -U platform_prod_user -d platform_prod_db -c "SELECT COUNT(*) FROM users_user;" 2>/dev/null || echo "Таблица не создана, нужно применить миграции" ``` ### 4. Если пользователей нет - создать суперпользователя ```bash docker exec -it platform_prod_web python manage.py createsuperuser ``` ## 📋 Что было исправлено: ✅ **Отдельная сеть для prod** - `prod_network` (изолирована от dev) ✅ **Именованные volumes** - все volumes имеют префикс `platform_prod_` ✅ **Полные имена контейнеров** - используются `platform_prod_db` и `platform_prod_redis` ✅ **Защита от случайного удаления данных** - volumes не удаляются при `docker compose down` ## ⚠️ Важно: - **НЕ используйте** `docker compose down --volumes` без бэкапа! - Всегда создавайте бэкапы перед пересборкой - Используйте `./safe-down.sh` для безопасной остановки ## 🔄 Восстановление из бэкапа (если нужно): ```bash # Восстановить PROD БД gunzip < /var/www/platform/prod/backups/platform_prod_db_*.sql.gz | docker exec -i platform_prod_db psql -U platform_prod_user -d postgres ``` ## 📁 Расположение скриптов Все служебные скрипты находятся в `/var/www/service/`: - **Бэкапы**: `/var/www/service/backup/` - **Управление платформой**: `/var/www/service/platform/` Подробнее: `/var/www/service/README.md`