204 lines
5.4 KiB
Markdown
204 lines
5.4 KiB
Markdown
|
|
# 🚀 Руководство по деплою: 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 <commit-hash>
|
|||
|
|
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
|
|||
|
|
|