uchill/REBUILD-INSTRUCTIONS.md

3.4 KiB
Raw Blame History

Инструкция по пересборке PROD и созданию бэкапов

🎯 Что нужно сделать:

1. Создать бэкап PROD БД

# Сделать скрипты исполняемыми (первый раз)
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 окружение

# Автоматическая пересборка (с бэкапом)
/var/www/service/platform/rebuild-prod.sh

Или вручную:

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. Проверить, что всё работает

# Проверить логи
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. Если пользователей нет - создать суперпользователя

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 для безопасной остановки

🔄 Восстановление из бэкапа (если нужно):

# Восстановить 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