# 🚀 Руководство по деплою: DEV → PROD ## 📍 Текущая структура - **DEV:** http://147.45.146.17:5177/ (папка `aiform_dev/`) - **PROD:** https://aiform.clientright.ru/ (домен продакшна) --- ## 🎯 Быстрый перенос изменений (1 команда) ```bash cd /var/www/fastuser/data/www/crm.clientright.ru/ticket_form ./deploy-to-prod.sh ``` Этот скрипт: 1. ✅ Проверит незакоммиченные изменения 2. ✅ Отправит код в git репозитории (dev и prod) 3. ✅ Пересоберёт PROD контейнеры 4. ✅ Перезапустит PROD окружение --- ## 📝 Пошаговый процесс (вручную) ### Шаг 1: Сохранить изменения в git ```bash cd /var/www/fastuser/data/www/crm.clientright.ru/ticket_form # Проверить что изменилось git status # Добавить изменения git add . # Закоммитить git commit -m "feat: Описание изменений" # Отправить в dev репозиторий git push aiform_dev main # или master ``` ### Шаг 2: Отправить в prod репозиторий ```bash # Отправить в prod git push aiform_prod main # или master ``` ### Шаг 3: Обновить PROD контейнеры ```bash # Пересобрать docker-compose -f docker-compose.prod.yml build # Перезапустить docker-compose -f docker-compose.prod.yml down docker-compose -f docker-compose.prod.yml up -d ``` --- ## 🔧 Про .env файл ### Почему один .env, а не два? **✅ Преимущества одного .env:** - Проще поддерживать (один файл вместо двух) - Меньше путаницы - Режим переключается через переменную `APP_ENV` в docker-compose **Как это работает:** В `docker-compose.dev.yml`: ```yaml environment: - APP_ENV=development # Переопределяет значение из .env - DEBUG=true ``` В `docker-compose.prod.yml`: ```yaml environment: - APP_ENV=production # Переопределяет значение из .env - DEBUG=false ``` **Ваш `.env` файл остаётся один**, но docker-compose переопределяет нужные переменные для каждого окружения. --- ## 📊 Структура репозиториев ``` Gitea (http://147.45.146.17:3002/negodiy): ├─ aiform_dev → DEV версия (http://147.45.146.17:5177/) ├─ aiform_prod → PROD версия (https://aiform.clientright.ru/) └─ erv-platform → Основной репозиторий ``` **Локальные папки:** - `/var/www/.../aiform_dev/` → DEV окружение - `/var/www/.../ticket_form/` → Основной проект (может быть и DEV и PROD) --- ## 🔄 Типичный workflow ### 1. Разработка в DEV ```bash cd /var/www/fastuser/data/www/crm.clientright.ru/aiform_dev # или cd /var/www/fastuser/data/www/crm.clientright.ru/ticket_form # Вносите изменения # Тестируете на http://147.45.146.17:5177/ ``` ### 2. Когда готово → деплой в PROD ```bash cd /var/www/fastuser/data/www/crm.clientright.ru/ticket_form # Вариант 1: Автоматический (рекомендуется) ./deploy-to-prod.sh # Вариант 2: Вручную git add . git commit -m "feat: Описание" git push aiform_prod main docker-compose -f docker-compose.prod.yml up -d --build ``` ### 3. Проверка PROD ```bash # Проверить статус docker-compose -f docker-compose.prod.yml ps # Проверить логи docker-compose -f docker-compose.prod.yml logs -f # Открыть в браузере # https://aiform.clientright.ru/ ``` --- ## ⚠️ Важные моменты 1. **Всегда тестируйте в DEV перед деплоем в PROD** 2. **Проверяйте `.env` файл** — убедитесь что там правильные настройки 3. **В PROD `APP_ENV=production` и `DEBUG=false`** (устанавливается через docker-compose) 4. **Не коммитьте `.env`** — он в `.gitignore` 5. **После деплоя проверяйте логи** — `docker-compose -f docker-compose.prod.yml logs` --- ## 🐛 Откат изменений (если что-то пошло не так) ```bash # Откатить к предыдущему коммиту cd /var/www/fastuser/data/www/crm.clientright.ru/ticket_form git log --oneline -5 # Найти нужный коммит git checkout git push aiform_prod main --force # Пересобрать docker-compose -f docker-compose.prod.yml up -d --build ``` --- ## 📞 Полезные команды ```bash # Статус контейнеров docker ps | grep aiform # Логи DEV docker logs aiform_frontend_dev -f docker logs aiform_backend_dev -f # Логи PROD docker logs ticket_form_frontend_prod -f docker logs ticket_form_backend_prod -f # Перезапуск PROD docker-compose -f docker-compose.prod.yml restart # Полная пересборка PROD docker-compose -f docker-compose.prod.yml down docker-compose -f docker-compose.prod.yml up -d --build ``` --- **Автор:** AI Assistant + Фёдор **Дата:** 2 января 2025