265 lines
7.6 KiB
Markdown
265 lines
7.6 KiB
Markdown
|
|
# 🚀 Руководство по DEV и PROD окружениям
|
|||
|
|
|
|||
|
|
## 📋 Обзор
|
|||
|
|
|
|||
|
|
Проект поддерживает два отдельных окружения:
|
|||
|
|
- **DEV** (Development) — для разработки и тестирования
|
|||
|
|
- **PROD** (Production) — для продакшна
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## 🏗️ Структура файлов
|
|||
|
|
|
|||
|
|
```
|
|||
|
|
ticket_form/
|
|||
|
|
├─ docker-compose.dev.yml ← Конфигурация для разработки
|
|||
|
|
├─ docker-compose.prod.yml ← Конфигурация для продакшна
|
|||
|
|
├─ .env.dev ← Переменные окружения для DEV
|
|||
|
|
├─ .env.prod ← Переменные окружения для PROD
|
|||
|
|
├─ .env.example ← Шаблон переменных окружения
|
|||
|
|
├─ start-dev.sh ← Скрипт запуска DEV
|
|||
|
|
├─ start-prod.sh ← Скрипт запуска PROD
|
|||
|
|
└─ ENVIRONMENTS.md ← Эта документация
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## 🛠️ Быстрый старт
|
|||
|
|
|
|||
|
|
### 1. Первоначальная настройка
|
|||
|
|
|
|||
|
|
```bash
|
|||
|
|
cd /var/www/fastuser/data/www/crm.clientright.ru/ticket_form
|
|||
|
|
|
|||
|
|
# Создаём .env файлы из шаблона
|
|||
|
|
cp .env.example .env.dev
|
|||
|
|
cp .env.example .env.prod
|
|||
|
|
|
|||
|
|
# Редактируем .env.dev (для разработки)
|
|||
|
|
nano .env.dev
|
|||
|
|
# Установите: APP_ENV=development, DEBUG=true
|
|||
|
|
|
|||
|
|
# Редактируем .env.prod (для продакшна)
|
|||
|
|
nano .env.prod
|
|||
|
|
# Установите: APP_ENV=production, DEBUG=false
|
|||
|
|
# Проверьте все URL и API ключи
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### 2. Запуск DEV окружения
|
|||
|
|
|
|||
|
|
```bash
|
|||
|
|
# Вариант 1: Используя скрипт (рекомендуется)
|
|||
|
|
./start-dev.sh
|
|||
|
|
|
|||
|
|
# Вариант 2: Вручную
|
|||
|
|
docker-compose -f docker-compose.dev.yml up -d --build
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
**Доступ:**
|
|||
|
|
- Frontend: http://localhost:5175
|
|||
|
|
- Backend: http://localhost:8200
|
|||
|
|
- API Docs: http://localhost:8200/docs
|
|||
|
|
|
|||
|
|
### 3. Запуск PROD окружения
|
|||
|
|
|
|||
|
|
```bash
|
|||
|
|
# Вариант 1: Используя скрипт (рекомендуется)
|
|||
|
|
./start-prod.sh
|
|||
|
|
|
|||
|
|
# Вариант 2: Вручную
|
|||
|
|
docker-compose -f docker-compose.prod.yml up -d --build
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
**Доступ:**
|
|||
|
|
- Frontend: http://localhost:5176
|
|||
|
|
- Backend: http://localhost:8200
|
|||
|
|
- API Docs: http://localhost:8200/docs
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## 🔍 Различия между DEV и PROD
|
|||
|
|
|
|||
|
|
| Параметр | DEV | PROD |
|
|||
|
|
|----------|-----|------|
|
|||
|
|
| **Порты** | 5175 (frontend), 8200 (backend) | 5176 (frontend), 8200 (backend) |
|
|||
|
|
| **Контейнеры** | `*_dev` | `*_prod` |
|
|||
|
|
| **PostgreSQL** | Локальный контейнер (порт 5433) | Внешний (147.45.189.234:5432) |
|
|||
|
|
| **Redis** | Локальный контейнер (порт 6380) | Системный (localhost:6379) |
|
|||
|
|
| **Debug** | ✅ Включен | ❌ Выключен |
|
|||
|
|
| **Логи** | DEBUG уровень | INFO уровень |
|
|||
|
|
| **Hot Reload** | ✅ Включен | ❌ Выключен |
|
|||
|
|
| **Build** | Dev режим | Production оптимизация |
|
|||
|
|
| **Healthcheck** | ❌ Нет | ✅ Есть |
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## 📝 Управление окружениями
|
|||
|
|
|
|||
|
|
### Остановка
|
|||
|
|
|
|||
|
|
```bash
|
|||
|
|
# Остановить DEV
|
|||
|
|
docker-compose -f docker-compose.dev.yml down
|
|||
|
|
|
|||
|
|
# Остановить PROD
|
|||
|
|
docker-compose -f docker-compose.prod.yml down
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### Просмотр логов
|
|||
|
|
|
|||
|
|
```bash
|
|||
|
|
# Логи DEV
|
|||
|
|
docker-compose -f docker-compose.dev.yml logs -f
|
|||
|
|
|
|||
|
|
# Логи PROD
|
|||
|
|
docker-compose -f docker-compose.prod.yml logs -f
|
|||
|
|
|
|||
|
|
# Логи конкретного сервиса
|
|||
|
|
docker-compose -f docker-compose.dev.yml logs -f ticket_form_backend_dev
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### Перезапуск
|
|||
|
|
|
|||
|
|
```bash
|
|||
|
|
# Перезапуск DEV
|
|||
|
|
docker-compose -f docker-compose.dev.yml restart
|
|||
|
|
|
|||
|
|
# Перезапуск PROD
|
|||
|
|
docker-compose -f docker-compose.prod.yml restart
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### Пересборка
|
|||
|
|
|
|||
|
|
```bash
|
|||
|
|
# Пересборка DEV
|
|||
|
|
docker-compose -f docker-compose.dev.yml up -d --build
|
|||
|
|
|
|||
|
|
# Пересборка PROD
|
|||
|
|
docker-compose -f docker-compose.prod.yml up -d --build
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## 🔐 Переменные окружения
|
|||
|
|
|
|||
|
|
### Основные переменные
|
|||
|
|
|
|||
|
|
| Переменная | DEV значение | PROD значение |
|
|||
|
|
|------------|--------------|---------------|
|
|||
|
|
| `APP_ENV` | `development` | `production` |
|
|||
|
|
| `DEBUG` | `true` | `false` |
|
|||
|
|
| `LOG_LEVEL` | `DEBUG` | `INFO` |
|
|||
|
|
| `VITE_API_URL` | `http://localhost:8200` | `https://aiform.clientright.ru/api` |
|
|||
|
|
| `NODE_ENV` | `development` | `production` |
|
|||
|
|
|
|||
|
|
### Базы данных
|
|||
|
|
|
|||
|
|
**DEV:**
|
|||
|
|
- PostgreSQL: `ticket_form_postgres_dev` (контейнер, порт 5433)
|
|||
|
|
- Redis: `ticket_form_redis_dev` (контейнер, порт 6380)
|
|||
|
|
|
|||
|
|
**PROD:**
|
|||
|
|
- PostgreSQL: `147.45.189.234:5432` (внешний)
|
|||
|
|
- Redis: `localhost:6379` (системный)
|
|||
|
|
- MySQL: `localhost:3306` (системный)
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## 🐛 Отладка
|
|||
|
|
|
|||
|
|
### Проверка статуса
|
|||
|
|
|
|||
|
|
```bash
|
|||
|
|
# Статус DEV контейнеров
|
|||
|
|
docker-compose -f docker-compose.dev.yml ps
|
|||
|
|
|
|||
|
|
# Статус PROD контейнеров
|
|||
|
|
docker-compose -f docker-compose.prod.yml ps
|
|||
|
|
|
|||
|
|
# Все контейнеры проекта
|
|||
|
|
docker ps | grep ticket_form
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### Проверка подключений
|
|||
|
|
|
|||
|
|
```bash
|
|||
|
|
# Проверка backend health
|
|||
|
|
curl http://localhost:8200/health
|
|||
|
|
|
|||
|
|
# Проверка frontend
|
|||
|
|
curl http://localhost:5175
|
|||
|
|
|
|||
|
|
# Проверка PostgreSQL (DEV)
|
|||
|
|
docker exec -it ticket_form_postgres_dev psql -U erv_user -d erv_db_dev
|
|||
|
|
|
|||
|
|
# Проверка Redis (DEV)
|
|||
|
|
docker exec -it ticket_form_redis_dev redis-cli -a redis_dev_pass ping
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## 📦 Git репозитории
|
|||
|
|
|
|||
|
|
### Структура репозиториев
|
|||
|
|
|
|||
|
|
- **`erv-platform`** (origin) — основной репозиторий
|
|||
|
|
- **`aiform_prod`** — production версия
|
|||
|
|
- **`aiform_dev`** — development версия (в папке `aiform_dev/`)
|
|||
|
|
|
|||
|
|
### Работа с Git
|
|||
|
|
|
|||
|
|
```bash
|
|||
|
|
# Push в основной репозиторий
|
|||
|
|
git push origin main
|
|||
|
|
|
|||
|
|
# Push в prod репозиторий
|
|||
|
|
git push aiform_prod main
|
|||
|
|
|
|||
|
|
# Push в оба
|
|||
|
|
git push origin main && git push aiform_prod main
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## ⚠️ Важные замечания
|
|||
|
|
|
|||
|
|
1. **Никогда не коммитьте `.env.dev` и `.env.prod`** — они в `.gitignore`
|
|||
|
|
2. **Всегда проверяйте `.env.prod`** перед деплоем в продакшн
|
|||
|
|
3. **DEV и PROD могут работать одновременно** на разных портах
|
|||
|
|
4. **В PROD используйте внешние БД** — не создавайте локальные контейнеры
|
|||
|
|
5. **Healthcheck в PROD** — проверяйте статус регулярно
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## 🔄 Миграция с текущей структуры
|
|||
|
|
|
|||
|
|
Если у вас уже запущены контейнеры со старыми именами:
|
|||
|
|
|
|||
|
|
```bash
|
|||
|
|
# Остановите старые контейнеры
|
|||
|
|
docker stop ticket_form_frontend ticket_form_backend ticket_form_frontend_prod
|
|||
|
|
|
|||
|
|
# Удалите старые контейнеры (опционально)
|
|||
|
|
docker rm ticket_form_frontend ticket_form_backend ticket_form_frontend_prod
|
|||
|
|
|
|||
|
|
# Запустите новые через скрипты
|
|||
|
|
./start-dev.sh
|
|||
|
|
./start-prod.sh
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## 📞 Поддержка
|
|||
|
|
|
|||
|
|
При проблемах:
|
|||
|
|
1. Проверьте логи: `docker-compose -f docker-compose.*.yml logs`
|
|||
|
|
2. Проверьте статус: `docker-compose -f docker-compose.*.yml ps`
|
|||
|
|
3. Проверьте `.env` файлы на корректность
|
|||
|
|
4. Убедитесь, что порты не заняты: `netstat -tulpn | grep -E "5175|5176|8200"`
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
**Автор:** AI Assistant + Фёдор
|
|||
|
|
**Дата:** 2 января 2025
|
|||
|
|
|