Як запустити жирові банки Java у Docker, Kubernetes та Openshift - розробник Red Hat

У світі, де важлива маневреність, прагнення зменшити витрачений час у конфігураціях середовища є очевидним у багатьох технологіях. Деякі методи, такі як віртуальні машини, які дозволяють розповсюдження попередньо налаштованих зображень, існують десятиліттями, тоді як інші, як контейнери Linux, є пізнішими.
Навіть такі платформи, як Java, дозволяють розробникам пакувати всі залежності, ресурси та конфігураційні файли в один файл JAR (Java Archive). Те, що спочатку почалося як спосіб виконання виконуваних класів Java у Java SE (Standard Edition), зараз набуло популярності і в Enterprise. Обіцянка забезпечити доступні для запуску сервери у "жирному банку", який містить не тільки вашу програму, але також час роботи сервера та його ресурси (бібліотеки, джерела даних, конфігурацію транзакцій тощо); такі проекти, як WildFly Swarm, Spring Boot та Vert.x стають дуже популярними в "Java Java".
Незважаючи на те, що ці проекти дозволяють "упаковувати" час роботи сервера, еластичне середовище, таке як "хмарні обчислення", потребує ще одного "шару" обгортання, і контейнери Linux ідеально підходять для нього. Коли ви загортаєте свою «жирну банку» в контейнер, ви також можете забезпечити власне середовище виконання для вашого файлу JAR, що забезпечує Операційну систему, віртуальну машину Java, а також можна збагатити JMX (Java Management Extensions), що уможливити легкий моніторинг JVM. Ви також можете встановити прапорці конфігурації, які дозволяють налагоджувати тощо.
Рішення
Для контейнерів Linux одним із методів запуску «жирних банок» є використання fabric8/java-jboss-openjdk8-jdk як базового образу докера. Це зображення надає Open JDK 1.8 та сценарій запуску (run.sh), що дозволяє агенту Jolokia - віддаленому JMX із JSON через HTTP - а також дозволяє використовувати змінні середовища для модифікації поведінки JVM відповідно до того, що визначається Третій фактор «Дванадцятифакторної програми»: зберігати конфігурацію в середовищі
Візьмемо, наприклад, мікросервіс WildFly-Swarm "привіт", який називається "hola", який повертає "привіт світ" іспанською мовою. Вихідний код для цієї програми доступний на Github, тут: https://github.com/redhat-helloworld-msa/hola.
Примітка: Для повного прикладу MSA (Microservices Architecture), який інтегрує такі технології, як WildFly Swarm, Spring-boot, Vert.x та NodeJS, перегляньте документацію, доступну за адресою: https://github.com/redhat-helloworld-msa/helloworld-msa