support-bot-saas/docs/DEPLOY_DOCKER.md
ed0ss cca3457f52
Some checks are pending
CI / lint-backend (push) Waiting to run
CI / lint-frontend (push) Waiting to run
CI / build-backend (push) Blocked by required conditions
CI / build-frontend (push) Blocked by required conditions
docs, proxy support, k8s fixes, test scripts
2026-06-29 15:57:30 +03:00

115 lines
4.6 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Развёртывание через Docker
## Требования
- Docker Engine 24+
- Docker Compose v2+
- Git
## Состав
Сервис состоит из 5 компонентов:
| Компонент | Образ | Назначение |
|-------------|------------------------------------|----------------------|
| postgres | `postgres:16` | База данных |
| redis | `redis:7-alpine` | Кэш / Celery broker |
| qdrant | `qdrant/qdrant` | Векторная БД |
| backend | сборка из `./backend` | FastAPI приложение |
| frontend | сборка из `./frontend` | React SPA (nginx) |
Опционально — мониторинг (Prometheus + Grafana) из `docker-compose.monitoring.yml`.
## 1. Клонирование и настройка
```bash
git clone <repo-url> support-bot-saas
cd support-bot-saas
```
Создайте файл `.env` в корне проекта:
```ini
OPENROUTER_API_KEY=sk-or-v1-...
OPENROUTER_EMBEDDING_MODEL=nvidia/llama-nemotron-embed-vl-1b-v2:free
OPENROUTER_LLM_MODEL=openai/gpt-oss-120b:free
JWT_SECRET=<случайная строка 32+ символов>
# Опционально: HTTP-прокси для OpenRouter
PROXY_URL=192.168.1.1:3128
PROXY_LOGIN=
PROXY_PASS=
# Эти переменные переопределяются в docker-compose.yml для работы по container name:
# DATABASE_URL, REDIS_URL, QDRANT_URL — можно не указывать
```
## 2. Запуск
```bash
docker compose up -d
```
Проверка:
```bash
docker compose ps
curl http://localhost:8080/api/health
# {"status":"ok"}
```
Фронтенд будет доступен на `http://localhost:8080`.
## 3. Мониторинг (опционально)
```bash
docker compose -f docker-compose.monitoring.yml up -d
```
- Prometheus: `http://localhost:9090`
- Grafana: `http://localhost:3001` (admin / admin)
## 4. Остановка
```bash
docker compose down
# С удалением томов БД:
docker compose down -v
```
## 5. Переменные окружения
| Переменная | По умолчанию | Обязательная |
|-------------------------------|---------------------------------------------------|--------------|
| `OPENROUTER_API_KEY` | `""` | Да |
| `OPENROUTER_EMBEDDING_MODEL` | `nvidia/llama-nemotron-embed-vl-1b-v2:free` | Нет |
| `OPENROUTER_LLM_MODEL` | `openrouter/owl-alpha` | Нет |
| `JWT_SECRET` | `change-me-in-production` | Да (в проде) |
| `DATABASE_URL` | `postgresql+asyncpg://postgres:postgres@localhost:5432/support_bot` | Нет (переопределяется в compose) |
| `REDIS_URL` | `redis://localhost:6379/0` | Нет (переопределяется в compose) |
| `QDRANT_URL` | `http://localhost:6333` | Нет (переопределяется в compose) |
| `PROXY_URL` | `""` | Нет |
| `PROXY_LOGIN` | `""` | Нет |
| `PROXY_PASS` | `""` | Нет |
| `JWT_EXPIRE_MINUTES` | `1440` | Нет |
## 6. Сборка образов вручную
```bash
# Бэкенд
docker build -t support-bot-backend ./backend
# Фронтенд
docker build -t support-bot-frontend ./frontend
```
После сборки замените `build: ./backend` и `build: ./frontend` в `docker-compose.yml` на `image: support-bot-backend` и `image: support-bot-frontend`, либо удалите `build` секции и пересоберите compose.
## 7. Тома (volumes)
| Том | Назначение | Размер по умолчанию |
|-----------------|----------------------|---------------------|
| `pgdata` | Данные PostgreSQL | без ограничения |
| `qdrant_storage`| Данные Qdrant | без ограничения |
Тома создаются автоматически в `docker compose up`.