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