Образ OpenLiberty Docker со *всеми* включенными функциями

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

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

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


person rü-    schedule 11.02.2020    source источник


Ответы (2)


Невозможно включить все функции сразу в 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).

person Andy Guibert    schedule 11.02.2020

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

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

person M. Broz    schedule 11.02.2020