Порядок настройки хостов перед установкой кластеров и ресиверов, использующих Java

Для работы с Java необходимо установить утилиту Jlink. Данный инструмент предназначен для сборки и оптимизации модулей, а также их зависимостей в пользовательском образе среды выполнения. Jlink позволяет сформировать минимальный комплект компонентов Java, удаляя ненужные модули, документацию и отладочные файлы, создавая компактный дистрибутив.

Используйте команду:

jlink --verbose --add-modules ALL-MODULE-PATH --compress 2 --strip-debug --no-header-files --no-man-pages --output /usr/lib/jvm/java-jlink

В результате по пути /usr/lib/jvm/java-jlink будет сформирован набор компонентов для работы Java.

Для корректного монтирования Java в контейнеры необходимо создать ссылку:

ln -nfs /usr/lib/jvm/java-jlink /usr/lib/jvm/jdk

Эта ссылка будет использоваться контейнерами, обеспечивающими работу Платформы. Передача ссылки в контейнер осуществляется с помощью томов. Том в Docker представляет собой файловую систему, существующую вне контейнера, и может быть подключен к одному или нескольким контейнерам. По умолчанию приложения в Docker-контейнерах являются stateless. Это означает, что приложение не оставляет данных после своей работы. Поэтому в Docker предусмотрены различные методы для хранения данных. Bind mount реализует следующий принцип работы: файл с данными хранится на хосте и открывается внутри контейнера.

Подробнее ознакомиться с работой Jlink можно по ссылке. Пример работы с Jlink.

Устранение ошибок

При выполнении команд может возникнуть ошибка:

Error: java.io.IOException: Cannot run program "objcopy": error=2, No such file or directory

Данная ошибка указывает на отсутствие утилиты objcopy. Установите ее с помощью следующих команд:

Для DEB подобных систем:

apt -y install binutils

Для RPM подобных систем:

yum install binutils

Подробнее о программе objcopy