Перейти к содержанию

Развертывание Сервиса с помощью 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, используйте настроенные значения в запросе.

Каждый пользователь создается в отдельном домене.

Для входа в Сервис используйте указанный адрес электронной почты в качестве логина.