# Инструкция по пересборке 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`
