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

Развертывание Сервиса с помощью Docker#

Данный раздел описывает установку и использование Docker Compose для развертывания Сервиса.

Процесс настройки и установки необходимо выполнять под учетной записью суперпользователя (с root правами).

Docker и Docker Compose не входят в дистрибутив Сервиса.

Ниже приведены команды для CentOS 7.

Установка Docker и Docker Compose#

Используйте официальную инструкцию для установки Docker Engine и Docker Compose для ОС CentOS. Актуальная на момент написания документа инструкция по установке представлена ниже.

Установите дополнительные зависимости:

yum install -y yum-utils

Добавьте репозиторий Docker:

yum-config-manager \
    --add-repo \
    https://download.docker.com/linux/centos/docker-ce.repo

Установите последнюю версию Docker:

yum install docker-ce docker-ce-cli containerd.io

Проверьте корректность установки:

docker -v

Скачайте Docker Compose:

curl -L "https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose

Установите права доступа (разрешить выполнение):

chmod +x /usr/local/bin/docker-compose

Запустите Docker:

systemctl start docker
systemctl enable docker

Проверьте статус Docker:

systemctl status docker

Авторизация в registry#

Для запуска компонентов необходимо получить их образы из dockerhub.visionlabs.ru (VisionLabs registry). Перед этим необходима авторизация.

docker login dockerhub.visionlabs.ru --username <username> --password <password>

Введите логин <username> и пароль <password>.

Получить их можно, обратившись к специалистам компании VisionLabs.

Подготовка и распаковка дистрибутива#

Дистрибутив представляет собой архив вида «clementine_2.26.0».

Архив содержит все компоненты, необходимые для установки и эксплуатации Сервиса.

Архив не включает зависимости, которые входят в стандартную поставку репозитория CentOS и могут быть загружены из открытых источников.

Перед процессом установки поместите файлы дистрибутива в директорию на сервере. Например, в директорию /root. В данной директории не должно быть других файлов дистрибутива кроме целевых, используемых для установки конечного продукта.

Выполните следующие действия.

Переключитесь в режим суперпользователя root:

sudo su

Создайте директорию для распаковки дистрибутива:

mkdir -p /var/lib/clementine

Переместите дистрибутив в созданную директорию:

mv /root/clementine_2.26.0 /var/lib/clementine

Установите архиватор unzip, если он не установлен:

yum install unzip

Перейдите в директорию с дистрибутивом:

cd /var/lib/clementine

Распакуйте файлы:

unzip clementine_2.26.0.zip

Создайте символьную ссылку. Ссылка указывает, что именно текущая версия дистрибутива используется для запуска:

ln -s clementine_2.26.0 current

Настройка Сервиса#

Необходимо настроить Selinux и Firewall, чтобы они не блокировали работу Сервиса.

Настройка Selinux и Firewall в данном руководстве не описывается.

В архиве «clementine_2.26.0» есть пример развертывания Docker в директории /example-docker (файлы .env и docker-compose.yml).

Настройка Сервиса выполняется в конфигурационном файле .env:

### GLOBAL ###

# Where to preserve persistent data

DATA=./
DOCKER_URL=dockerhub.visionlabs.ru/clementine

# username for databases

CLEMENTINE_USERNAME=clementine

# Password for services

CLEMENTINE_PASSWORD=clementine

# CLEMENTINE tags

CLEMENTINE_AUTH_VER=v1.1.12
CLEMENTINE_DEPARTMENTS_VER=v1.1.4
CLEMENTINE_UI_VER=v1.48.0
VL_NOTIFIER_VER=0.1.16
CLEMENTINE_API_VER=v1.9.0

# 3rd party services tags

POSTGRESQL_VER=12

### Configs ###

# clementine-ui

CLEMENTINE_UI_HOST=clementine_ui
CLEMENTINE_UI_PORT=8080

# clementine-api

CLEMENTINE_API_HOST=clementine_api
CLEMENTINE_API_PORT=9010

# clementine-auth

CLEMENTINE_AUTH_HOST=clementine_auth
CLEMENTINE_AUTH_PORT=9000
CLEMENTINE_AUTH_DOMAIN=127.0.0.1
CLEMENTINE_AUTH_PROTOCOL=HTTP
CLEMENTINE_AUTH_DSN=postgresql://clementine:clementine@clementine_db/clementine_auth

# clementine-departments

CLEMENTINE_DEPARTMENTS_HOST=clementine_departments
CLEMENTINE_DEPARTMENTS_PORT=9100
CLEMENTINE_DEPARTMENTS_DSN=postgresql://clementine:clementine@clementine_db/clementine_departments

# luna

LUNA_API_HOST=127.0.0.1
LUNA_API_PORT=5000
LUNA_LICENSES_HOST=127.0.0.1
LUNA_LICENSES_PORT=5120
LUNA_ACCOUNT_ID=a0000000-0000-4000-a000-000000000000

# lunastreams

LUNA_STREAMS_HOST=127.0.0.1
LUNA_STREAMS_PORT=5160

# vl-notifier API

VLNOTIFIER_HOST=vlnotifier
VLNOTIFIER_PORT=9200
VLNOTIFIER_SUBJECT=«Clementine VL Notifier»

# vl-timetracker

VLTIMETRACKER_HOST=127.0.0.1
VLTIMETRACKER_PORT=8003

# vl-access

VLACCESS_HOST=127.0.0.1
VLACCESS_PORT=9091

# OTHER

LOG_LEVEL=1
TELEGRAM_BOT_TOKEN=
SMTP_SERVER=
SMTP_PORT=
SMTP_SENDER=
SMTP_LOGIN=
SMTP_PASSWORD=

В конфигурационный файл .env внесите необходимые настройки, представленные в Таблице 2.

Таблица 2. Параметры конфигурации

Параметр Описание
Параметры конфигурации БД LUNA CLEMENTINE 2.0
DATA=./ Точка монтирования данных контейнеров. Указывать необязательно
DOCKER_url= По умолчанию: dockerhub.visionlabs.ru/clementine
CLEMENTINE_USERNAME= Название БД
По умолчанию: clementine
CLEMENTINE_PASSWORD= Пароль БД
По умолчанию: clementine
Теги
Теги Clementine:
CLEMENTINE_AUTH_VER= CLEMENTINE_AUTH_VER=v1.1.12;
CLEMENTINE_DEPARTMENTS_VER= CLEMENTINE_DEPARTMENTS_VER=v1.1.4;
CLEMENTINE_UI_VER= CLEMENTINE_UI_VER=v1.48.0;
CLEMENTINE_API_VER= CLEMENTINE_API_VER=v1.9.0
Теги сторонних компонентов:
VL_NOTIFIER_VER= VL_NOTIFIER_VER=0.1.16;
POSTGRESQL_VER= POSTGRESQL_VER=12
Параметры конфигурации CLEMENTINE UI
CLEMENTINE_UI_HOST= Адрес сервера CLEMENTINE UI
По умолчанию: clementine_ui
CLEMENTINE_UI_PORT= Порт, на котором будет запущен компонент
По умолчанию: 8080
Параметры конфигурации CLEMENTINE API
CLEMENTINE_API_HOST= Адрес сервера CLEMENTINE API
По умолчанию: clementine_api
CLEMENTINE_API_PORT= Порт, на котором будет запущен компонент
По умолчанию: 9010
Параметры конфигурации CLEMENTINE AUTH
CLEMENTINE_AUTH_HOST= Адрес сервера CLEMENTINE AUTH
По умолчанию: clementine_auth
CLEMENTINE_AUTH_PORT= Порт, на котором будет запущен компонент
По умолчанию: 9000
CLEMENTINE_AUTH_DOMAIN= Домен приложения, используется для генерации ссылок в email.
В зависимости от конфигурации сетевого окружения это может быть именной домен, например, clementine.local или IP адрес компонента, доступный в сети.
Параметр необязателен и необходим только в случае использования адреса электронной почты для регистрации новых пользователей и сброса паролей
По умолчанию: 127.0.0.1
CLEMENTINE_AUTH_PROTOCOL= Протокол, для работы в web-среде Зависит от текущих настроек инфраструктуры и требований по безопасности
Возможные значения:
- HTTP — протокол без шифрования;
- HTTPS — протокол с SSL-шифрованием
По умолчанию: HTTP
CLEMENTINE_AUTH_DSN= Подключение компонента CLEMENTINE AUTH к БД
По умолчанию: postgresql://clementine:clementine@clementine_db/clementine_auth
Параметры конфигурации CLEMENTINE DEPARTMENTS
CLEMENTINE_DEPARTMENTS_HOST= Адрес сервера CLEMENTINE DEPARTMENTS
По умолчанию: clementine_departments
CLEMENTINE_DEPARTMENTS_PORT= Порт, на котором будет запущен компонент
По умолчанию: 9100
CLEMENTINE_DEPARTMENTS_DSN= Подключение CLEMENTINE DEPARTMENTS к БД
По умолчанию: postgresql://clementine:clementine@clementine_db/clementine_departments
Параметры конфигурации LUNA PLATFORM 5
LUNA_API_HOST= Хост LP5. IP адрес сервера, на котором развернута LP5
По умолчанию: 127.0.0.1
LUNA_API_PORT= Порт компонента API LP5
По умолчанию: 5000
LUNA_LICENSES_HOST= Хост LUNA LICENSES
По умолчанию: 127.0.0.1
LUNA_LICENSES_PORT= Порт компонента LUNA LICENSES.
По умолчанию: 5120
LUNA_ACCOUNT_ID= Идентификатор аккаунта пользователя в LP5
По умолчанию: a0000000-0000-4000-a000-000000000000 1
Конфигурация LUNA Streams
LUNA_STREAMS_HOST= Адрес сервера LUNA Streams
По умолчанию: 127.0.0.1
LUNA_STREAMS_PORT= Порт LUNA Streams
По умолчанию: 5160
Параметры конфигурации VL NOTIFIER и отправки уведомлений
VLNOTIFIER_HOST= Адрес сервера компонента уведомлений
По умолчанию: vlnotifier
VLNOTIFIER_PORT= Порт компонента уведомлений
По умолчанию: 9200
VLNOTIFIER_SUBJECT Текст в заголовке, отправляемого письма с уведомлением
По умолчанию: Clementine VL Notifier
Параметры конфигурации модуля учета рабочего времени
VLTIMETRACKER_HOST= Адрес сервера компонента учета рабочего времени
По умолчанию: 127.0.0.1
VLTIMETRACKER_PORT= Порт компонента учета рабочего времени
По умолчанию: 8003
Параметры конфигурации VL Access
VLACCESS_HOST= Адрес сервера VL Access
По умолчанию: 127.0.0.1
VLACCESS_PORT= Порт VL Access
По умолчанию: 9091
Параметры конфигурации SMTP
LOG_LEVEL= Уровень логирования. Доступные значения:
0 — запись только ошибок;
1 — запись ошибок и информационных сообщений;
2 — запись ошибок, информационных сообщений и отладочной информации
По умолчанию: 1
TELEGRAM_BOT_TOKEN= Токен бота Telegram, куда будут присылаться уведомления
SMTP_SERVER= Адрес сервера SMTP
SMTP_PORT= Порт сервера SMTP. Доступные значения:
25 — без шифрования;
465SSL;
587TLS
SMTP_SENDER= Email отправителя для отправки уведомлений пользователям. Например, robot@clementine.local
SMTP_LOGIN= Логин для подключения к SMTP серверу
SMTP_PASSWORD= Пароль для подключения к SMTP серверу

Параметры конфигурации почтового сервера SMTP опциональны и необходимы только в случае использования адреса электронной почты для регистрации новых пользователей и сброса паролей.

Параметры конфигурации SMTP также используются для компонента уведомлений.

Ошибки загрузки данных записываются в системный лог посредством подсистемы логирования с тремя уровнями логирования.

Внутренние ошибки записываются в системный лог посредством подсистемы логирования:

  • с уровнем важности «ошибка» в случае, если дальнейшее выполнение программы невозможно;
  • с уровнем важности «предупреждение», если программа сохраняет работоспособность.

Настройка веб-интерфейса#

Настройка веб-интерфейса Сервиса выполняется в конфигурационном файле config.json (находится в example-docker/config/ui/):

{
  "auth": {
    "allowPasswordChange": {
      "ui": true,
      "email": true
    }
  },
  "similarityThresholds": {
    "low": 0.75,
    "medium": 0.95
  },
  "maxImageSize": "2G"
}

Таблица 3. Параметры конфигурации веб-интерфейса

Параметр Описание
allowPasswordChange Настройка типа регистрации в Сервисе.
Всех пользователей в интерфейсе Сервиса создает администратор. При этом новому пользователю приходит ссылка на адрес электронной почты для продолжения регистрации (подробнее см. «VISIONLABS LUNA CLEMENTINE 2.0. Руководство пользователя»).
Также возможно создание нового пользователя с явным указанием пароля в Сервисе. Для этого необходимо настроить возможность задавать пароли в веб-интерфейсе Сервиса.
По умолчанию: “ui”: true, “email”: true
similarityThresholds Настройка цветового обозначения порогов схожести:
- значение степени схожести ниже «low» будут отмечены красным цветом;
- значение степени схожести между «low» и «medium» — желтым цветом;
- значение степени схожести выше «medium» — зеленым цветом.
По умолчанию: low: 0.75, medium": 0.95
maxImageSize Максимальный размер изображения.
При изменении этого параметра должен устанавливаться CLIENT_MAX_BODY_SIZE для контейнера clementine-ui в docker-compose.yml.
По умолчанию: 2G

Настройка логотипа в интерфейсе#

Пользователь может задать свой логотип для интерфейса, который будут отображаться в левом углу верхнего меню. Для этого:

1․ Перейдите в папку media.

2․ Перенесите файлы с изображениями логотипа в формате .svg в папку.

3․ Назовите файл "logo.svg" для светлой темы и "dark-logo.svg" для тёмной.

3․ В файле config.json пропишите пути для файлов (Рисунок 2):

"logoUrl": "/static/media/logo.svg",
"darkLogoUrl": "/static/media/dark-logo.svg"
Пути для файлов лого в config.json
Рисунок 2. Пути для файлов лого в config.json

Запуск Сервиса#

Перейдите в директорию Docker:

cd /var/lib/clementine/current/example-docker

Для запуска Сервиса введите команду:

./start_clementine.sh

Проверьте статус всех запущенных Docker-контейнеров:

docker-compose ps

Контейнеры должны иметь статус "UP":

example-docker_clementine_api_1
example-docker_clementine_auth_1
example-docker_clementine_departments_1
example-docker_clementine_db_1
example-docker_clementine_ui_1
example-docker_vlnotifier_1

Добавление аккаунта администратора#

После того, как Сервис запустится, создайте новую учетную запись и следуйте указаниям:

docker-compose exec clementine_auth python3 cli.py createaccount

Укажите логин (адрес электронной почты) и пароль учетной записи, установите роль пользователя.

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

Запустите создание новой авторизации для аккаунта и следуйте указаниям:

docker-compose exec clementine_auth python3 cli.py createauth

Запустите смену роли аккаунта и следуйте указаниям:

docker-compose exec clementine_auth python3 cli.py setaccountrole

  1. Является примером идентификатора, а не реальным параметром. Необходимо подставить ID из LP5.