5.6 KiB
5.6 KiB
PROD Окружение - Инструкция по управлению
⚠️ ВАЖНО: Защита данных
PROD окружение использует отдельную сеть (prod_network) и именованные volumes для изоляции от dev.
Что было исправлено:
- ✅ Отдельная сеть -
prod_networkвместо общейdev_network - ✅ Именованные volumes - все volumes имеют префикс
platform_prod_ - ✅ Полные имена контейнеров - в
DATABASE_URLиREDIS_URLиспользуются полные имена контейнеров - ✅ Изоляция от dev - prod не может случайно подключиться к dev БД
📋 Основные команды
Безопасная остановка (СОХРАНЯЕТ данные БД):
# Использовать скрипт из /var/www/service
/var/www/service/platform/safe-down-prod.sh
# Или вручную
cd /var/www/platform/prod
docker compose down
⚠️ ОСТОРОЖНО: Полная очистка (УДАЛЯЕТ данные БД):
# Сначала создайте бэкап!
/var/www/service/backup/backup-prod-db.sh
# Затем можно удалить volumes
cd /var/www/platform/prod
docker compose down --volumes
Запуск:
docker compose up -d
Создание бэкапа БД:
# Бэкап PROD БД
/var/www/service/backup/backup-all-db.sh
# Альтернативный скрипт для PROD БД
/var/www/service/backup/backup-prod-db.sh
# Автоматический бэкап PROD БД (для cron)
/var/www/service/backup/backup-db-auto.sh
Примечание: DEV БД не бэкапится, так как это окружение разработки.
Настройка автоматического бэкапа PROD БД (2 раза в день: 00:00 и 12:00):
# Установить автоматический бэкап PROD БД
/var/www/service/backup/setup-cron-backup.sh
# Удалить автоматический бэкап
/var/www/service/backup/remove-cron-backup.sh
# Проверить расписание
crontab -l | grep backup-db-auto
# Просмотр логов
tail -f /var/www/platform/prod/backups/backup.log
Примечание: Автоматически бэкапится только PROD БД. DEV БД не бэкапится.
Полная пересборка PROD (с бэкапом):
/var/www/service/platform/rebuild-prod.sh
Этот скрипт:
- Создаёт бэкап БД
- Останавливает контейнеры
- Пересобирает образы без кэша
- Запускает контейнеры
- Применяет миграции
Применение миграций:
docker exec platform_prod_web python manage.py migrate
Создание суперпользователя:
docker exec -it platform_prod_web python manage.py createsuperuser
🔧 Структура volumes
platform_prod_postgres_data- данные PostgreSQL БДplatform_prod_redis_data- данные Redisplatform_prod_front_material_node_modules- node_modules для frontendplatform_prod_front_material_next- кэш Next.js
🌐 Сеть
- Prod сеть:
platform_prod_network(изолирована от dev) - Dev сеть:
dev_network(отдельная)
🔗 Подключения
Все сервисы используют полные имена контейнеров:
- БД:
platform_prod_db(неdb) - Redis:
platform_prod_redis(неredis)
Это гарантирует, что даже при запуске dev и prod одновременно, они не будут конфликтовать.
📝 Что делать если данные потеряны
- Проверьте бэкапы:
ls -la ./backups/ - Если бэкапа нет, но данные есть в dev БД, можно скопировать:
# Создать бэкап из dev docker exec platform_dev_db pg_dump -U platform_dev_user -d platform_dev_db > /tmp/dev_backup.sql # Применить миграции в prod docker exec platform_prod_web python manage.py migrate # Восстановить данные (осторожно!) docker exec -i platform_prod_db psql -U platform_prod_user -d platform_prod_db < /tmp/dev_backup.sql - Если данных нет нигде - создайте пользователей заново через
createsuperuser
🚨 Частые ошибки
❌ НЕ делайте:
docker compose down --volumesбез бэкапа- Использование коротких имен (
db,redis) в переменных окружения - Общая сеть для dev и prod
✅ Делайте:
- Всегда используйте
docker compose down(без--volumes) - Регулярно создавайте бэкапы PROD БД:
/var/www/service/backup/backup-all-db.sh - Используйте полные имена контейнеров в конфигурации
📁 Расположение скриптов
Все служебные скрипты перенесены в /var/www/service/:
- Бэкапы:
/var/www/service/backup/ - Управление платформой:
/var/www/service/platform/
Подробнее: /var/www/service/README.md