# 🚀 Руководство по 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