uchill/REBUILD-INSTRUCTIONS.md

99 lines
3.4 KiB
Markdown
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.

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