4.6 KiB
4.6 KiB
Развёртывание через 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. Клонирование и настройка
git clone <repo-url> support-bot-saas
cd support-bot-saas
Создайте файл .env в корне проекта:
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. Запуск
docker compose up -d
Проверка:
docker compose ps
curl http://localhost:8080/api/health
# {"status":"ok"}
Фронтенд будет доступен на http://localhost:8080.
3. Мониторинг (опционально)
docker compose -f docker-compose.monitoring.yml up -d
- Prometheus:
http://localhost:9090 - Grafana:
http://localhost:3001(admin / admin)
4. Остановка
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. Сборка образов вручную
# Бэкенд
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.