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

4.6 KiB
Raw Blame History

Развёртывание через 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.