Cum se rulează jarsele fat Java în Docker, Kubernetes și Openshift - Red Hat Developer

rulează

Într-o lume în care agilitatea contează, efortul de a reduce timpul pierdut în configurațiile de mediu este evident în multe tehnologii. Unele tehnici, cum ar fi mașinile virtuale, care permit distribuirea imaginilor preconfigurate, există de zeci de ani, în timp ce altele precum containerele Linux sunt mai recente.

Chiar și platformele precum Java permit dezvoltatorilor să împacheteze toate dependențele, resursele și fișierele de configurare într-un singur fișier JAR (Java Archive). Ceea ce a început inițial ca o modalitate de a avea clase Java executabile în Java SE (Standard Edition), a câștigat acum notorietate și în Enterprise. Promisiunea de a livra servere rulabile într-un „fat-jar” care conține nu numai aplicația dvs., ci și runtime-ul serverului și resursele sale (biblioteci, surse de date, configurația tranzacțiilor etc.); proiecte realizate precum WildFly Swarm, Spring Boot și Vert.x devin foarte populare în „Java land”.

Deși aceste proiecte permit „ambalarea” timpului de rulare al serverului, un mediu elastic precum „Cloud computing” are nevoie de un alt „strat” de împachetare, iar containerele Linux sunt perfecte pentru acesta. Când înfășurați „vasul de grăsime” într-un container, puteți oferi, de asemenea, un mediu de execuție personalizat pentru fișierul JAR care oferă un sistem operațional, mașina virtuală Java și poate fi, de asemenea, îmbogățit cu JMX (Java Management Extensions) care permite monitorizarea ușoară a JVM. De asemenea, puteți seta semnalizatoare de configurare care să permită depanarea etc.

Soluția

Pentru containerele Linux, o metodă pentru rularea „fat-jars” este folosirea fabric8/java-jboss-openjdk8-jdk ca imagine de andocare de bază. Această imagine oferă Open JDK 1.8 și un script de pornire (run.sh) care permite un agent Jolokia - un JMX la distanță cu JSON prin HTTP - și permite, de asemenea, utilizarea variabilelor de mediu pentru a modifica comportamentul JVM în funcție de ceea ce este determinat de Al treilea factor al „Aplicației cu doisprezece factori”: stocați configurația în mediu

Să luăm, de exemplu, microserviciul „hello world” WildFly-Swarm numit „hola” care returnează „hello world” în spaniolă. Codul sursă pentru această aplicație este disponibil pe Github, aici: https://github.com/redhat-helloworld-msa/hola.

Notă: Pentru un exemplu complet MSA (Microservices Architecture) care integrează tehnologii precum WildFly Swarm, Spring-boot, Vert.x și NodeJS, răsfoiți documentația disponibilă la: https://github.com/redhat-helloworld-msa/helloworld-msa