Изображение OpenLiberty Docker с включенными * всеми * функциями - PullRequest
2 голосов
/ 11 февраля 2020

OpenLiberty Docker Изображения , помеченные как full, содержат server.xml, который включает только функцию javaee-8.0. Те, которые помечены как microProfile3, включают только microProfile-3.0.

. Я хочу и то, и другое ... еще лучше: я бы хотел, чтобы во время разработки были включены только все функции ; Я оптимизирую производительность, когда мне это нужно, то есть, может быть, совсем нет.

Есть ли более простой способ, чем создать другой образ с включенными обеими функциями?

Ответы [ 2 ]

2 голосов
/ 11 февраля 2020

Вы можете рассматривать теги как индикаторы того, какие функции включены в изображение в большей степени, чем те, которые включены по умолчанию. Другими словами, «full» имеет все доступные функции и может быть включен без необходимости установки, тогда как «microProfile3» имеет только установленные функции microProfile-3. Обратите внимание, что некоторые пакеты, такие как javaee8, включают в себя не только одну функцию, так как она также предоставляет другие функции, которые пользователям может понадобиться использовать вместе с этой единственной функцией (хотя по умолчанию включена только эта одна функция). Вы можете увидеть разбивку функций по пакетам здесь

Ответ Энди объясняет, почему вы не можете включить все функции одновременно (конфликты). Что касается того, есть ли простой способ сборки с включенными обеими функциями, я бы рекомендовал начать с 'full' и обновить Dockerfile, чтобы скопировать сервер. xml с обеими функциями (плюс любые другие, которые вы хотите) в / config , Как вы уже упоминали в своем вопросе, это хорошо для разработки, но вы не хотели бы делать это для производства, так как оно включало бы много дополнительных функций, которые вы не используете. Для производства вы бы хотели использовать противоположный подход и начать с наименьшего образа (возможно, ядра) и добавлять только те функции, которые необходимы вашему приложению / серверу, обеспечивая соответствие времени выполнения.

2 голосов
/ 11 февраля 2020

Невозможно включить все функции одновременно в Liberty, потому что многие функции намеренно конфликтуют друг с другом. Например, вы не можете загрузить две разные версии одной и той же функции одновременно (например, servlet-3.1 и servlet-4.0)

Вы можете довольно кратко включить все последние функции JavaEE и MicroProfile одновременно сделав это:

<server>
  <featureManager>
    <feature>javaee-8.0</feature>
    <feature>microProfile-3.2</feature>
  </featureManager>
</server>

Это даст довольно много возможностей (обычно требуется больше, чем одно приложение). Функции, не включенные в эти две зонтичные функции, довольно специализированы, такие как сохранение сеанса JCache (sessionCache-1.0) или ведение журнала событий (eventLogging-1.0).

...