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