Деплой (Docker)¶
Production-стек web-приложения: Docker-образ + PostgreSQL + (опционально) Stripe billing.
Образ¶
Dockerfile — multi-stage на python:3.12-slim:
- только runtime-пакеты (
requirements-server.txt), итоговый образ ~474 MB - non-root пользователь
fluxion - данные — в
/app/data HEALTHCHECK—curl http://localhost:8000/api/health- порт
8000 FLUXION_SERVER_MODE=saasпо умолчанию — многопользовательский режим (ниже)
docker build -t fluxion .
docker run -p 8000:8000 -e FLUXION_JWT_SECRET=$(openssl rand -hex 32) fluxion
Production compose¶
docker-compose.prod.yml — приложение + PostgreSQL 16 (healthcheck pg_isready, том fluxion_pgdata_prod).
Обязательные переменные (без них compose не запустится):
export FLUXION_JWT_SECRET=$(openssl rand -base64 48) # не короче 32 символов
export POSTGRES_PASSWORD=<надёжный пароль>
export FLUXION_CORS_ORIGINS=https://ваш-сайт.example # адреса фронтенда через запятую
Compose сам задаёт FLUXION_ENV=production (без надёжного JWT-секрета сервер не
стартует), FLUXION_SERVER_MODE=saas и том fluxion_workspaces_prod для папок
пользователей.
Опциональные: STRIPE_SECRET_KEY, STRIPE_WEBHOOK_SECRET, STRIPE_PRICE_PRO,
STRIPE_PRICE_TEAM, STRIPE_PRICE_ENTERPRISE, OLLAMA_HOST (по умолчанию
http://host.docker.internal:11434 — Ollama на хосте).
Smoke-тесты после деплоя¶
curl -fsS http://localhost:8000/api/health
# register → login → chat через /api/sessions/{id}/chat
TOKEN=$(curl -s -X POST http://localhost:8000/api/auth/register \
-H "Content-Type: application/json" \
-d '{"email": "smoke@example.com", "password": "smoke-test-123", "name": "Smoke"}' \
| jq -r .access_token)
curl -s -X POST http://localhost:8000/api/sessions \
-H "Authorization: Bearer $TOKEN" -H "Content-Type: application/json" -d '{}'
Режим SaaS¶
В многопользовательском режиме сервер защищает себя и пользователей друг от друга:
- агент работает только на чтение и не запускает тесты (pytest выполняет код проекта с правами сервера);
- каждый пользователь видит только свою папку
FLUXION_WORKSPACES_DIR/<id>; - серверная индексация RAG отключена: индекс общий для процесса.
Для одного пользователя на своём компьютере (расширение VS Code) используйте
fluxion-server.bat — он запускает сервер в режиме local только на
127.0.0.1.
Замечания¶
- PostgreSQL для production:
FLUXION_DB_URL=postgresql+psycopg2://...(SQLite — только dev) - Ollama запускается на хосте; контейнер обращается через
host.docker.internal - В контейнере без Ollama
/api/healthчестно вернёт"ollama_available": false