Docker — это программная система для контейнеризации и управления приложениями, позволяет упростить процедуру поставки не только программного обеспечения, но и всего необходимого окружения (java, базы данных и других необходимых компонентов) в некотором стандартизированном формате (Docker-образе), который можно установить из сети Интернет или из standalone-файла и запустить в среде любой операционной системы ( том числе на ОС Windows, с некоторыми оговорками).

В экосистеме Docker также существует инструмент под названием docker-compose, который позволяет управлять несколькими контейнерами, организовывать выделенную внутреннюю сеть между ними и т. п.

Теперь Платформу НЕЙРОСС также возможно установить в виде Docker-образа, в том числе из публичного Docker Hub: https://hub.docker.com/r/itrium/neyross-platform.

 Содержание:

Подготовка к установке

  1. Установить стандартным способом docker и docker-compose согласно инструкции для используемой операционной системы. 
  2. Создать файл docker-compose.yml следующего содержания:

    version: '2'
    services:
      neyross-platform:
        image: itrium/neyross-platform:latest
        devices:
          - "/dev/mem:/dev/mem"
        cap_add:
          - sys_rawio
        network_mode: host
        volumes:
          - ./neyross-config:/opt/Neyross/neyross-config/
          - ./neyross-resources:/root/Neyross/ultima-vmc/resources/
          - ./neyross-ssl/ssl:/usr/share/nginx/ssl/
          - ./neyross-ssl/ca:/usr/share/nginx/ca/
          - ./neyross-plugins:/usr/share/ultima-vmc/lib/plugins/
        environment:
            DATABASE_HOST: localhost
            DATABASE_USER: ultima
            DATABASE_PASSWORD: 123456
            DATABASE_NAME: ultima
            NEYROSS_LICENCE_MODE: hardware # may be 'usb', 'hardware', 'network'
            NEYROSS_LICENCE_FILE_NAME: licence
      database:
        image: postgres:10
        network_mode: host
        volumes:
          - ./neyross-db:/var/lib/postgresql/data:z
        environment:
            POSTGRES_USER: ultima
            POSTGRES_PASSWORD: 123456
            POSTGRES_DB: ultima
    volumes:
      neyross-plugins:


Выбор версии

Использование latest-версии

Предложенное содержимое файла docker-compose.yml  позволяет установить наиболее «свежий» (загруженный последним) образ Платформы НЕЙРОСС:

itrium/neyross-platform:latest


Использование фиксированной версии

При необходимости установить конкретную версию Платформы НЕЙРОСС, нужно указать номер версии:

itrium/neyross-platform:VERSION

Где VERSION – одна из доступных версий, например: itrium/neyross-20.6.800.

Список доступных версий см. https://hub.docker.com/r/itrium/neyross-platform/tags.

Описание других параметров в файле docker-compose.yml приведено в подразделе [Параметры запуска].


Первый запуск Платформы НЕЙРОСС

В директории, где находится подготовленный на предыдущем шаге файл docker-compose.yml, нужно выполнить команду 

docker-compose up 


При первом запуске будут загружены образы с СУБД Postgresql 10 и ПО Платформы НЕЙРОСС (если они еще не установлены в ОС). Для этого необходим доступ в сеть Интернет.

В условиях отсутствия доступа в сеть Интернет необходимо предварительно экспортировать образы itrium/neyross-platform:latest и postgres:10 в tar-файлы и импортировать их на машине запуска согласно инструкции [https://stackoverflow.com/questions/23935141/how-to-copy-docker-images-from-one-host-to-another-without-using-a-repository].

Лицензирование

При установке из Docker-контейнера лицензирование Платформы НЕЙРОСС может осуществляться по аппаратному идентификатору или с использованием сервера сетевых ключей. Подробная информация о типах защиты приведена в разделе [Лицензирование | Платформа НЕЙРОСС]. Используемый тип защиты указывается в файле docker-compose.yml параметром NEYROSS_LICENCE_MODE  [Параметры запуска]. По умолчанию, лицензирование осуществляется по аппаратному идентификатору. Поддержка лицензирования Docker-инсталляции через USB-ключи в текущей версии не реализована.


По аппаратному идентификатору (HID)

При первом запуске, если лицензия ещё не загружена, пользователь будет уведомлён о том, какой аппаратный идентификатор имеется у текущей инсталляции:

22:41:44 › docker-compose up                                                                                        
Building with native build. Learn about native build in Compose here: https://docs.docker.com/go/compose-native-build/
Starting docker_database_1         ... done
Starting docker_neyross-platform_1 ... done
Attaching to docker_database_1, docker_neyross-platform_1
database_1          | 
database_1          | PostgreSQL Database directory appears to contain a database; Skipping initialization
database_1          | 
database_1          | 2022-08-03 19:41:47.118 UTC [1] LOG:  listening on IPv4 address "0.0.0.0", port 5432
database_1          | 2022-08-03 19:41:47.118 UTC [1] LOG:  listening on IPv6 address "::", port 5432
database_1          | 2022-08-03 19:41:47.120 UTC [1] LOG:  listening on Unix socket "/var/run/postgresql/.s.PGSQL.5432"
database_1          | 2022-08-03 19:41:47.130 UTC [25] LOG:  database system was shut down at 2022-08-03 19:25:49 UTC
database_1          | 2022-08-03 19:41:47.134 UTC [1] LOG:  database system is ready to accept connections
neyross-platform_1  | neyross-config directory is empty; calculating HID...
neyross-platform_1  | ---
neyross-platform_1  | 
neyross-platform_1  | No licence file provided; if you want to use licencing via hardware ID, request licence for HID = v2:B0AE3DFE7C6D44B9673E715A00442A2D from vendor and put it to ./neyross-config/ directory (default file name is licence.lic)
neyross-platform_1  | 
neyross-platform_1  | ---
docker_neyross-platform_1 exited with code 1

Передайте сгенерированный аппаратный идентификатор (HID) вида:

HID = v2:B0AE3DFE7C6D44B9673E715A00442A2D

специалистам компании ИТРИУМ для генерации файла лицензии в формате licence.lic.

Полученный файл сохраните в директорию ./neyross-config рядом с docker-compose.yml и запустите Платформу НЕЙРОСС.


С использованием сервера сетевых ключей

Наравне с лицензированием по HID, поддерживается лицензирование через сервер сетевых ключей. необходимо положить файл gnclient.ini в директорию ./neyross-config и указать переменной окружения NEYROSS_LICENCE_MODE значение network [Параметры запуска].

Запуск Платформы НЕЙРОСС

Для запуска Платформы НЕЙРОСС в фоновом режиме выполните команду:

docker-compose up -d

 Рекомендуется включить эту команду в автозапуск операционной системы, для автоматической загрузке при старте сервера.

Обновление Платформы НЕЙРОСС

При использовании latest-версии

Если в файле docker-compose.yml указан параметр

image: itrium/neyross-platform:latest

необходимо обновить локальный реестр Docker и загрузить новую версию образа контейнера с указанной меткой, в данном случае, — latest.

Для этого выполните команду:

docker pull itrium/neyross-platform:latest

и перезапустите docker-compose:

docker compose restart


При использовании фиксированной версии

Замените версию в файле docker-compose.yml:

itrium/neyross-platform:VERSION

перезапустите docker-compose:

docker compose restart

Если в локальном реестре Docker нет образа контейнера с указанной меткой, он будет принудительно загружен из репозитория.

Параметры запуска

При необходимости пользователь может изменить параметры подключения к базе данных и используемого типа защиты (лицензирования) в файле docker-compose.yml. Перечень параметров приведён в таблице ниже.

ПеременнаяЗначение по умолчаниюКомментарий
DATABASE_NAMEultimaНазвание базы данных
DATABASE_USERultimaИмя пользователя базы данных
DATABASE_PASSWORD123456Пароль пользователя базы данных
NEYROSS_LICENCE_MODEhardware

Тип защиты [Лицензирование | Платформа НЕЙРОСС]. Возможные значения:

  • hardware – лицензирование через аппаратный идентификатор (HID),
  • usb – лицензирование через USB-ключ (в текущее время не поддерживается в docker-контейнере),
  • network – лицензирование через сервер сетевых ключей.

Имя лицензионного файла по умолчанию – licence.lic

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

Хранение и бекапирование данных

Всё, что происходит внутри файловой системы Docker-контейнера (например, создание временных файлов), не сохраняется от запуска к запуску. Поэтому такие данные как файл лицензии или БД необходимо выносить из контейнера в так называемые volume – папки-накопители, которые присутствуют и в ФС контейнера, и в ФС хоста. Текущие volume:

Имя папкиКомментарий
neyross-configфайлы лицензирования (создаётся пользователем)
neyross-dbбаза данных (создаётся автоматически)
neyross-resourcesфайлы дополнительных ресурсов (тайлы ГИС, лицензии neurotec и т. п.)
neyross-sslдва volume для HTTPs-сертификатов
neyross-pluginsисполняемые .jar-файлы Платформы НЕЙРОСС, в том числе файлы плагинов


В случае использования Docker-дистрибутива возможности Платформы по автоматическому бекапированию и работе с накопителями могут быть ограничены, так что резервирование данных сводится к ручному бекапу пользователем директории (neyross-db и пр.) наложенными средствами.

Дополнительные технические детали

Логирование и отладка

По умолчанию логирование для большинства классов установлено в INFO. При первом запуске в папке ./neyross-config/ создаётся файл logback-production.xml, который можно редактировать из хостовой ОС.

Просмотреть логи можно в консоли (в случае запуска через docker-compose up) или при помощи команды docker-compose logs (в случае запуска через docker-compose up -d).

Работа с образом из файла (без интернета)

В некоторых случаях нет возможности загрузить образ из сети Интернет прямо на сервер; в таком случае можно воспользоваться следующей парой команд:

docker save -o ./path_to_image_file.tar itrium/neyross-platform:20.5.797 # (при необходимости скачивает и сохраняет образ в файл
docker load -i ./path_to_image_file.tar # импортирует образ из файла в локальный реестр Docker

Аналогичную процедуру нужно сделать также для образа postgres:10

После того как все нужные образы импортированы на сервер, можно запускать docker-compose по инструкции выше.