Help:13-alpha deploy: Difference between revisions
M.vinogradov (talk | contribs) m (Добавлены однострочники для удаления docker-артефактов) |
m (review and minor fixes) |
||
| (One intermediate revision by one other user not shown) | |||
| Line 1: | Line 1: | ||
== Демонстрационная сборка == | == Демонстрационная сборка == | ||
Установка демонстрационной версии Svacer с поддержкой [[Help:13-alpha introduction|описанных функций]] доступна только в докере с использованием docker compose | Установка демонстрационной версии Svacer с поддержкой [[Help:13-alpha introduction|описанных функций]] доступна только в докере с использованием docker compose. | ||
== docker compose == | == docker compose == | ||
| Line 20: | Line 20: | ||
| <code>llm</code> || Запуск Svacer с поддержкой ИИ-ассистента и возможностью подключения к нему внешних LLM для разметки предупреждений | | <code>llm</code> || Запуск Svacer с поддержкой ИИ-ассистента и возможностью подключения к нему внешних LLM для разметки предупреждений | ||
|- | |- | ||
| <code>mcp</code> || Запуск Svacer с MCP-сервером | | <code>mcp</code> || Запуск Svacer с [[Help:13-alpha MCP|MCP-сервером]] | ||
|- | |- | ||
| <code>"*"</code> || Запуск Svacer со всеми доступными профилями | | <code>"*"</code> || Запуск Svacer со всеми доступными профилями | ||
| Line 40: | Line 40: | ||
== <code>--profile ai</code> == | == <code>--profile ai</code> == | ||
Данный профиль не требует дополнительной конфигурации для запуска | Данный профиль не требует дополнительной конфигурации для запуска. | ||
== <code>--profile llm</code> == | == <code>--profile llm</code> == | ||
| Line 46: | Line 46: | ||
При запуске Svacer с профилем <code>llm</code> необходимо: | При запуске Svacer с профилем <code>llm</code> необходимо: | ||
* установить в переменную окружения <code>LLM_URL</code> значение | * установить в переменную окружения <code>LLM_URL</code> значение URL, по которому контейнер <code>svacer-validation-server</code> сможет подключиться к сервису моделей, совместимому с OpenAI API; | ||
* установить в переменную окружения <code>LLM_TOKEN</code> значение ключа авторизации в | * установить в переменную окружения <code>LLM_TOKEN</code> значение ключа авторизации в сервисе моделей; | ||
* при необходимости установить значения переменных <code>REG_TOKEN</code> или <code>REG_LOGIN</code> и <code>REG_PASSWORD</code> содержащих, соответственно, токен авторизации или логин и пароль администратора. Эти данные нужны для запуска компонентов поддержки LLM в ИИ-ассистенте. По умолчанию будут использоваться логин и пароль <code>admin:admin</code>; | * при необходимости установить значения переменных <code>REG_TOKEN</code> или <code>REG_LOGIN</code> и <code>REG_PASSWORD</code> содержащих, соответственно, токен авторизации или логин и пароль администратора. Эти данные нужны для запуска компонентов поддержки LLM в ИИ-ассистенте. По умолчанию будут использоваться логин и пароль <code>admin:admin</code>; | ||
* при желании изменить отображаемое название сервиса в интерфейсе выбора моделей, можно установить значение переменной <code>REG_NAME</code>. По умолчанию <code>llm</code>; | * при желании изменить отображаемое название сервиса в интерфейсе выбора моделей, можно установить значение переменной <code>REG_NAME</code>. По умолчанию <code>llm</code>; | ||
* при необходимости ограничения списка доступных моделей, в переменную <code>MODEL_WHITELIST</code> нужно передать список названий моделей разделённых запятыми; | * при необходимости ограничения списка доступных моделей, в переменную <code>MODEL_WHITELIST</code> нужно передать список названий моделей, разделённых запятыми; | ||
* если производительность сервиса моделей позволяет параллельно обрабатывать несколько предупреждений, то можно установить значение переменной <code>MAX_PARALLEL_REQUESTS</code> в значение больше единицы; | * если производительность сервиса моделей позволяет параллельно обрабатывать несколько предупреждений, то можно установить значение переменной <code>MAX_PARALLEL_REQUESTS</code> в значение больше единицы; | ||
* если производительность модели не позволяет обрабатывать одно предупреждение в минуту, то результаты обработки не будут получены. Чтобы увеличить время ожидания новых результатов модели, можно установить значение переменной <code>MODEL_VALIDATION_MAXATTEMPTS</code> в значение кратное 12 (двенадцати). Например, значение 60 == 5 минут. | * если производительность модели не позволяет обрабатывать одно предупреждение в минуту, то результаты обработки не будут получены. Чтобы увеличить время ожидания новых результатов модели, можно установить значение переменной <code>MODEL_VALIDATION_MAXATTEMPTS</code> в значение кратное 12 (двенадцати). Например, значение 60 == 5 минут. | ||
| Line 56: | Line 56: | ||
Значения данных переменных могут быть сохранены в <code>.env</code> файл и переданы при запуске с помощью аргумента <code>docker compose --env-file ./.env ... up -d</code> | Значения данных переменных могут быть сохранены в <code>.env</code> файл и переданы при запуске с помощью аргумента <code>docker compose --env-file ./.env ... up -d</code> | ||
Описание переменных доступных для конфигурации запуска ИИ-ассистента с поддержкой внешнего сервиса моделей: | Описание переменных, доступных для конфигурации запуска ИИ-ассистента с поддержкой внешнего сервиса моделей: | ||
<pre> | <pre> | ||
# URL of the OpenAI API-compatible LLM model service | # URL of the OpenAI API-compatible LLM model service | ||
| Line 95: | Line 95: | ||
При запуске Svacer с профилем <code>llm</code> необходимо: | При запуске Svacer с профилем <code>llm</code> необходимо: | ||
* установить в переменную окружения <code>MCP_PORT</code> номер сетевого порта на котором будет доступен MCP-сервер. По умолчанию будет назначен порт <code>8002</code>; | * установить в переменную окружения <code>MCP_PORT</code> номер сетевого порта, на котором будет доступен MCP-сервер. По умолчанию будет назначен порт <code>8002</code>; | ||
* установить в переменную окружения <code>SVACER_MPC_TOKEN</code> строку с токеном авторизации, который необходимо будет указать в клиенте MCP-сервера; | * установить в переменную окружения <code>SVACER_MPC_TOKEN</code> строку с токеном авторизации, который необходимо будет указать в клиенте MCP-сервера; | ||
* при необходимости доступа к MCP-серверу по адресу отличному от <code>localhost</code> (<code>127.0.0.1</code>) или при использовании DNS необходимо: | * при необходимости доступа к MCP-серверу по адресу отличному от <code>localhost</code> (<code>127.0.0.1</code>) или при использовании DNS необходимо: | ||
| Line 104: | Line 104: | ||
После запуска mcp-сервер будет доступен по адресу <code><nowiki>http://localhost:{MCP_PORT}/mcp</nowiki></code> | После запуска mcp-сервер будет доступен по адресу <code><nowiki>http://localhost:{MCP_PORT}/mcp</nowiki></code> | ||
Описание других переменных доступных для конфигурации запуска ИИ-ассистента с поддержкой внешнего сервиса моделей: | Описание других переменных, доступных для конфигурации запуска ИИ-ассистента с поддержкой внешнего сервиса моделей: | ||
<pre> | <pre> | ||
# Bearer token for /mcp clients in HTTP mode. Generate: openssl rand -hex 32 | # Bearer token for /mcp clients in HTTP mode. Generate: openssl rand -hex 32 | ||
| Line 136: | Line 136: | ||
== Удаление демонстрационной версии == | == Удаление демонстрационной версии == | ||
В процессе запуска демонстрационной версии в docker будут созданы контейнеры, тома, сеть с префиксом <code>svacer-13</code>. Чтобы | В процессе запуска демонстрационной версии в docker будут созданы контейнеры, тома, сеть с префиксом <code>svacer-13</code>. Чтобы их удалить, выполните последовательно следующие шаги: | ||
# Остановите и удалите все docker-контейнеры Svacer; | # Остановите и удалите все docker-контейнеры Svacer; | ||
# Удалите тома с данными Svacer; | # Удалите тома с данными Svacer; | ||
| Line 151: | Line 151: | ||
=== Удаление томов с данными БД, объектного и файлового хранилищ === | === Удаление томов с данными БД, объектного и файлового хранилищ === | ||
После выполнения следующей команды все данные накопленные за время работы демонстрационной версии Svacer будут удалены. При повторном запуске будет развёрнута чистая версия системы. | После выполнения следующей команды все данные, накопленные за время работы демонстрационной версии Svacer, будут удалены. При повторном запуске будет развёрнута чистая версия системы. | ||
<pre> | <pre> | ||
| Line 165: | Line 165: | ||
=== Удаление docker-образов === | === Удаление docker-образов === | ||
После удаления docker-образов компонентов демонстрационной версии Svacer, при повторном запуске они снова будут загружены из репозитория https://hub.docker.com. | После удаления docker-образов компонентов демонстрационной версии Svacer, при повторном запуске они снова будут загружены из репозитория https://hub.docker.com/u/ispras. | ||
<pre> | <pre> | ||
Latest revision as of 12:32, 19 June 2026
Демонстрационная сборка
Установка демонстрационной версии Svacer с поддержкой описанных функций доступна только в докере с использованием docker compose.
docker compose
Для установки демонстрационной версии подготовлен специальный файл docker-compose-with-ai-llm-mcp.yml
curl -LO https://svacer.ispras.ru/extra/docker-compose-with-ai-llm-mcp.yml
При запуске Svacer с использованием данного compose-файла доступны профили:
| Профиль | Описание |
|---|---|
| Без профиля | Запуск Svacer без поддержки ИИ-ассистента и MCP |
ai |
Запуск Svacer с поддержкой ИИ-ассистента со встроенной моделью |
llm |
Запуск Svacer с поддержкой ИИ-ассистента и возможностью подключения к нему внешних LLM для разметки предупреждений |
mcp |
Запуск Svacer с MCP-сервером |
"*" |
Запуск Svacer со всеми доступными профилями |
Для запуска с использованием одного или нескольких профилей используется команда
docker compose -f docker-compose-with-ai-llm-mcp.yml ... --profile llm --profile mcp ... up -d
При этом необходимо учитывать, что
- при запуске Svacer без профилей или только с профилем
mcpфункциональность разметки предупреждений с помощью ИИ будет возвращать ошибку; - запуск с профилями
llmиmcpтребует настройки переменных окружения (см. ниже).
Для удобства настройки переменных окружения может использоваться env-файл llm-mcp.env, который после установки необходимых значений может быть передан команде запуска
docker compose -f docker-compose-with-ai-llm-mcp.yml --env-file ./llm-mcp.env ... --profile llm --profile mcp ... up -d
--profile ai
Данный профиль не требует дополнительной конфигурации для запуска.
--profile llm
Запуск Svacer с данным профилем даёт возможность подключить к ИИ-ассистенту внешний сервис моделей, поддерживающий OpenAI API. После успешного подключения ИИ-ассистент сможет использовать LLM для разметки и комментирования предупреждений. В списке разметки с помощью ИИ появятся модели доступные пользователю, чей ключ был передан при запуске.
При запуске Svacer с профилем llm необходимо:
- установить в переменную окружения
LLM_URLзначение URL, по которому контейнерsvacer-validation-serverсможет подключиться к сервису моделей, совместимому с OpenAI API; - установить в переменную окружения
LLM_TOKENзначение ключа авторизации в сервисе моделей; - при необходимости установить значения переменных
REG_TOKENилиREG_LOGINиREG_PASSWORDсодержащих, соответственно, токен авторизации или логин и пароль администратора. Эти данные нужны для запуска компонентов поддержки LLM в ИИ-ассистенте. По умолчанию будут использоваться логин и парольadmin:admin; - при желании изменить отображаемое название сервиса в интерфейсе выбора моделей, можно установить значение переменной
REG_NAME. По умолчаниюllm; - при необходимости ограничения списка доступных моделей, в переменную
MODEL_WHITELISTнужно передать список названий моделей, разделённых запятыми; - если производительность сервиса моделей позволяет параллельно обрабатывать несколько предупреждений, то можно установить значение переменной
MAX_PARALLEL_REQUESTSв значение больше единицы; - если производительность модели не позволяет обрабатывать одно предупреждение в минуту, то результаты обработки не будут получены. Чтобы увеличить время ожидания новых результатов модели, можно установить значение переменной
MODEL_VALIDATION_MAXATTEMPTSв значение кратное 12 (двенадцати). Например, значение 60 == 5 минут.
Значения данных переменных могут быть сохранены в .env файл и переданы при запуске с помощью аргумента docker compose --env-file ./.env ... up -d
Описание переменных, доступных для конфигурации запуска ИИ-ассистента с поддержкой внешнего сервиса моделей:
# URL of the OpenAI API-compatible LLM model service LLM_URL= # LLM model service authorization token LLM_TOKEN= # Svacer admin authorization token for the operation of AI-assistant components # Or with REG_LOGIN and REG_PASSWORD, if token is not set # REG_TOKEN= # Svacer admin login and password for the operation of AI-assistant components # REG_LOGIN=admin # REG_PASSWORD=admin # ID of the service in the AI-assistant # REG_ID=llm # The name of the service displayed in the AI-assistant # REG_NAME=llm # Service description # REG_DESCRIPTION="LLM model service" # Comma-separated list of available models. If not specified, all models available to the LLM model service user will be available. # MODEL_WHITELIST= # Maximum number of simultaneous requests to the LLM model service # MAX_PARALLEL_REQUESTS=1 # Maximum number of 5s attempts to get single warning result from LLM # MODEL_VALIDATION_MAXATTEMPTS=12
--profile mcp
При запуске с данным профилем стартует контейнер с MCP-сервером, подключённый к текущему экземпляру Svacer.
При запуске Svacer с профилем llm необходимо:
- установить в переменную окружения
MCP_PORTномер сетевого порта, на котором будет доступен MCP-сервер. По умолчанию будет назначен порт8002; - установить в переменную окружения
SVACER_MPC_TOKENстроку с токеном авторизации, который необходимо будет указать в клиенте MCP-сервера; - при необходимости доступа к MCP-серверу по адресу отличному от
localhost(127.0.0.1) или при использовании DNS необходимо:- указать необходимый адрес/dns-имя в переменной
MCP_ALLOWED_HOSTSв виде172.17.0.1:*/some.domain:*; - указать необходимый адрес/dns-имя в переменной
MCP_ALLOWED_ORIGINSв видеhttp://172.17.0.1:*/http://some.domain:*;
- указать необходимый адрес/dns-имя в переменной
- при необходимости можно настроить логин и пароль пользователя, от имени которого MCP-сервер будет выполнять запросы к Svacer. По умолчанию
admin:admin.
После запуска mcp-сервер будет доступен по адресу http://localhost:{MCP_PORT}/mcp
Описание других переменных, доступных для конфигурации запуска ИИ-ассистента с поддержкой внешнего сервиса моделей:
# Bearer token for /mcp clients in HTTP mode. Generate: openssl rand -hex 32 SVACER_MCP_TOKEN= # Svacer admin login and password # SVACER_LOGIN=admin # SVACER_PASSWORD=admin # External port that will be mapped by docker to the internal port 8000 # MCP_PORT=8002 # DNS rebinding protection for FastMCP # MCP_ENABLE_DNS_REBINDING_PROTECTION=false # MCP_ALLOWED_HOSTS=svacer-mcp:* # MCP_ALLOWED_ORIGINS=http://svacer-mcp:* # HTTP timeout for requests to Svacer, seconds # SVACER_TIMEOUT=30 # Public URL of this MCP server (used for WWW-Authenticate, RFC 9728). # Defaults to http://localhost:<SVACER_HTTP_PORT>. Set when running behind a reverse proxy. # SVACER_MCP_RESOURCE_URL=https://mcp.example.com # Subset of tools to register (comma-separated). Unset = all 8 tools. # Available: get_projects, get_snapshots, get_warnings, get_markers, # get_project_stats, get_project_groups, get_advanced_file_preview, get_diff # SVACER_TOOLS=get_projects,get_snapshots,get_markers
Удаление демонстрационной версии
В процессе запуска демонстрационной версии в docker будут созданы контейнеры, тома, сеть с префиксом svacer-13. Чтобы их удалить, выполните последовательно следующие шаги:
- Остановите и удалите все docker-контейнеры Svacer;
- Удалите тома с данными Svacer;
- Удалите docker-образы демонстрационной версии Svacer;
Остановка и удаление docker-контейнеров Svacer
docker compose -f docker-compose-with-ai-llm-mcp.yml --profile "*" down
После остановки и удаления docker-контейнеров с компонентами Svacer, данные продолжат храниться в docker-томах. Поэтому при повторном запуске демонстрационной версии они будут доступны.
Удаление томов с данными БД, объектного и файлового хранилищ
После выполнения следующей команды все данные, накопленные за время работы демонстрационной версии Svacer, будут удалены. При повторном запуске будет развёрнута чистая версия системы.
docker volume rm svacer-13-ai-postgres svacer-13-object-store svacer-13-postgres svacer-13-snapshot-sources
Удаление томов также можно выполнить одновременно с остановкой и удалением docker-контейнеров Svacer
docker compose -f docker-compose-with-ai-llm-mcp.yml --profile "*" down -v
Удаление docker-образов
После удаления docker-образов компонентов демонстрационной версии Svacer, при повторном запуске они снова будут загружены из репозитория https://hub.docker.com/u/ispras.
docker image rm ispras/svacer:13-alpha ispras/svacerai:13-alpha ispras/svacer-mcp:13-alpha ispras/validation-server:13-alpha
Удаление томов также можно выполнить одновременно с остановкой и удалением docker-контейнеров Svacer и томов с данными
docker compose -f docker-compose-with-ai-llm-mcp.yml --profile "*" down -v --rmi all