Развертывание Сервиса с помощью Docker#
Данный раздел описывает установку и использование Docker Compose для развертывания Сервиса. Процесс настройки и установки необходимо выполнять под учетной записью суперпользователя (с root-правами). Docker и Docker Compose не входят в комплект поставки Сервиса.
Ниже приведены команды для AlmaLinux.
Установка Docker и Docker Compose#
Установка Docker описана в официальной документации. Актуальная инструкция по установке представлена ниже.
Установите дополнительные зависимости:
dnf install -y dnf-utils
Добавьте репозиторий Docker:
dnf config-manager \
--add-repo \
https://download.docker.com/linux/centos/docker-ce.repo
Установите Docker и плагин Docker Compose:
dnf install -y docker-ce docker-ce-cli containerd.io docker-compose-plugin
Проверьте корректность установки Docker:
docker -v
Запустите Docker:
systemctl start docker
systemctl enable docker
Проверьте статус Docker:
systemctl status docker
Ответ должен содержать статус Active (running).
Проверьте установку Docker Compose:
docker compose version
В ответе должна быть указана версия Docker Compose.
Авторизация в registry#
Получите образы компонентов из dockerhub.visionlabs.ru/cv-service (registry VisionLabs) для запуска Сервиса. Перед этим авторизуйтесь. Получите логин и пароль у специалистов VisionLabs, затем введите полученные данные:
docker login dockerhub.visionlabs.ru/cv-service --username <username> --password <password>
Введите логин <username> и пароль <password>.
Подготовка и распаковка дистрибутива#
Дистрибутив представляет собой архив вида luna_point_3.1.0.zip.
Перед установкой поместите архив дистрибутива в директорию на сервере. Например, в /root.
Выполните следующие действия.
Переключитесь в режим суперпользователя root:
sudo su
Создайте директорию для распаковки дистрибутива:
mkdir -p /var/lib/luna_point
Переместите архив дистрибутива:
mv /root/luna_point_3.1.0.zip /var/lib/luna_point/
Установите unzip, если он не установлен:
dnf install -y unzip
Перейдите в директорию с дистрибутивом:
cd /var/lib/luna_point
Распакуйте архив:
unzip luna_point_3.1.0.zip
Создайте символьную ссылку на текущую версию. Ссылка указывает, какой комплект поставки используется для запуска Сервиса:
ln -sfn luna_point_3.1.0 current
Настройка Сервиса#
Необходимо настроить SELinux и Firewall, чтобы они не блокировали работу Сервиса.
Настройка SELinux и Firewall в данном руководстве не описывается.
Архив luna_point_3.1.0 содержит пример развертывания Docker в директории /example-docker. В директории находятся файлы .env и docker-compose.yml.
Настройка Сервиса выполняется в файле .env.
Настройка .env#
Перейдите в директорию Docker текущей версии Сервиса:
cd /var/lib/luna_point/current/example-docker
Отредактируйте параметры конфигурации:
nano /var/lib/luna_point/current/example-docker/.env
Параметры, используемые поставляемым файлом docker-compose.yml, приведены ниже.
| Параметр | Описание |
|---|---|
DOCKER_URL |
Адрес Docker registry для получения образов Сервиса. По умолчанию: dockerhub.visionlabs.ru/cv-service. |
SERVER_DOCKER_URL |
Адрес Docker registry для получения образов Server, необходимых Сервису. По умолчанию: dockerhub.visionlabs.ru/cv-server. |
SECURE_CV_TAG |
Тег Docker-образа для сервисов secure-cv и secure-migrate. По умолчанию: v.1.0.0. |
SECURE_UI_IMAGE |
Имя Docker-образа для сервиса secure-ui. По умолчанию: secure-ui-base. |
SECURE_UI_TAG |
Тег Docker-образа для сервиса secure-ui. По умолчанию: 2.13.1. |
PORT |
Порт backend API secure-cv. По умолчанию: 5300. |
UI_PORT |
Порт веб-интерфейса secure-ui. По умолчанию: 8080. |
SECURE_CV_ADMIN_LOGIN |
Логин root-администратора для авторизации в API. По умолчанию: root@example.com. |
SECURE_CV_ADMIN_PASSWORD |
Пароль root-администратора для авторизации в API. По умолчанию: root. |
REDIS_PASSWORD |
Пароль Redis, используемый Сервисом. По умолчанию: lunapass. |
LOG_MAX_SIZE |
Максимальный размер одного файла логов Docker. По умолчанию: 50m. |
LOG_MAX_FILE |
Максимальное количество файлов логов Docker. По умолчанию: 5. |
Laurent: тревога по событию видеоаналитики#
Каждому подразделению соответствует одна плата Laurent. Администратор записывает настройки
в поле «Описание» (description) подразделения, которому принадлежит группа потока. Пример:
{
"laurent2": {
"ip": "192.168.1.100",
"password": "123456",
"delay": 0.9,
"events": [
{ "event_type": "fire", "relay": 1 },
{ "event_type": "weapon", "relay": 2 },
{ "event_type": "fight", "relay": 3 }
]
}
}
ip— IP-адрес или имя хоста платы, при необходимости с портом (192.168.1.100:8080). Протокол, путь и параметры запроса указывать не нужно.password— необязательная строка с паролем платы.123456— только тестовый пример, автоматической подстановки пароля нет. Если пароль не нужен, поле можно убрать или оставить пустым.delay— необязательная положительная длительность включения реле в секундах. Значения от одной секунды округляются вниз до целых. Безdelayотправляется включение без команды отложенного выключения.events— соответствия типов событий каналам реле1–4. Каждыйevent_typeдолжен встречаться один раз. Для новой аналитики добавьте её точныйevent_typeи канал: интеграция Laurent не ограничена тремя типами из примера. Несколько типов могут использовать один канал.
Поле description должно содержать целиком корректный JSON. Форма подразделения ограничивает
описание 512 символами; при необходимости уберите форматирующие пробелы и переносы строк.
В рабочем месте кнопка «Тревога» находится справа над кадром выбранного события ВА. Настройки выбираются по цепочке событие → поток → группа → подразделение-владелец. Кнопка появляется, когда вся цепочка доступна и для типа события найден канал в корректной конфигурации. Пустое/обычное текстовое описание, ошибочный JSON, некорректные параметры или отсутствие канала скрывают кнопку.
По нажатию браузер отправляет HTTP GET на /cmd.cgi выбранной платы, используя команду
REL,<relay>,1[,<delay>] и необязательный параметр psw. Плата должна быть доступна с рабочего
места оператора, а запрос разрешён браузером (CORS и HTTP/HTTPS). Автоматической отправки при получении
события и автоматических повторов нет. Поведение кнопки следующее: блокировка
на время отправки и пауза 3 секунды после успеха. Если плата возвращает ошибку, показывается
уведомление и доступна ручная повторная попытка.
Запуск Сервиса#
Перейдите в директорию Docker:
cd /var/lib/luna_point/current/example-docker
Запустите Сервис с помощью поставляемого скрипта:
./start_luna_point.sh
Скрипт запускает Сервис в соответствии с поставляемой конфигурацией Docker Compose и ожидает готовности необходимых сервисов.
Для комплекта поставки luna_point команда имеет вид ./start_luna_point.sh.
Проверьте статус всех запущенных Docker-контейнеров:
docker compose ps
Список контейнеров должен содержать:
secure-cv;secure-ui.
Контейнер secure-migrate используется только для миграций и не должен оставаться запущенным.
Добавление пользователя-администратора#
После запуска Сервиса создайте пользователя системного администратора с помощью backend API.
В примере ниже используются учетные данные root по умолчанию и порт backend API по умолчанию:
curl -X POST http://127.0.0.1:5300/1/admins/users \
-u 'root@example.com:root' \
-H 'Content-Type: application/json' \
-d '{"email":"admin@example.com","password":"admin","full_name":"System Admin"}'
Указанные логин и пароль являются примером учётных данных — для реального применения используйте свои данные.
Если значения SECURE_CV_ADMIN_LOGIN, SECURE_CV_ADMIN_PASSWORD или PORT были изменены в .env, используйте настроенные значения в запросе.
Каждый пользователь создается в отдельном домене.
Для входа в Сервис используйте указанный адрес электронной почты в качестве логина.