Ukotvenie aplikácií Java pomocou Jib

1. Prehľad

V tomto výučbe sa pozrieme na Jib a na to, ako to zjednodušuje kontajnerizáciu Java aplikácií.

Vezmeme si jednoduchú aplikáciu Spring Boot a vytvoríme jej obraz Dockeru pomocou nástroja Jib. A potom tiež obrázok zverejníme vo vzdialenom registri.

A nezabudnite si tiež prečítať náš návod o dokovaní aplikácií Spring Boot pomocou dockerfile a doker nástroj.

2. Úvod do Jib

Jib je open-source nástroj Java udržiavaný spoločnosťou Google na vytváranie obrazov Docker aplikácií Java. Zjednodušuje to kontajnerizáciu, pretože s ňou nemusíme písať a dockerfile.

A vlastne, ani nemusíme mať docker nainštalovaný aby sme si sami vytvorili a zverejnili obrázky ukotvenia.

Google publikuje Jib ako doplnok Maven aj Gradle. To je pekné, pretože to znamená, že Jib zachytí všetky zmeny, ktoré urobíme v našej aplikácii, pri každom zostavení. To nám ušetrí samostatné príkazy na zostavenie / odoslanie docker a zjednoduší ich pridanie do kanálu CI.

Existuje aj niekoľko ďalších nástrojov, ako sú pluginy docker-maven-plugin a dockerfile-maven od Spotify, aj keď prvý je už zastaraný a druhý vyžaduje dockerfile.

3. Jednoduchá aplikácia na pozdrav

Zoberme si jednoduchú jarnú bootovaciu aplikáciu a ukotvime ju pomocou Jib. Odhalí jednoduchý koncový bod ZÍSKAŤ:

// localhost: 8080 / pozdrav

Čo môžeme jednoducho urobiť s pružinovým radičom MVC:

@RestController verejná trieda GreetingController {private static final String template = "Hello Docker,% s!"; súkromné ​​konečné počítadlo AtomicLong = nový AtomicLong (); @GetMapping ("/ pozdrav") verejné Pozdrav pozdravu (@RequestParam (hodnota = "meno", defaultValue = "svet") Názov reťazca) {vrátiť nový pozdrav (counter.incrementAndGet (), String.format (šablóna, názov)) ; }} 

4. Príprava nasadenia

Budeme sa tiež musieť lokálne nastaviť na autentifikáciu pomocou úložiska Docker, do ktorého chceme nasadiť.

V tomto príklade budeme poskytnúť naše poverenia DockerHub .m2 / settings.xml:

  registry.hub.docker.com 

Existujú aj iné spôsoby, ako poskytnúť prihlasovacie údaje. Odporúčaným spôsobom spoločnosti Google je použitie pomocných nástrojov, ktoré môžu ukladať poverenia v šifrovanom formáte do súborového systému. V tomto príklade sme mohli použiť docker-credential-helpers namiesto ukladania poverení vo formáte prostého textu do nastavenia.xml, čo je oveľa bezpečnejšie, aj keď jednoducho mimo rozsahu tohto tutoriálu.

5. Nasadenie na Docker Hub pomocou výložníka

Teraz môžeme použiť jib-maven-plugin, alebo ekvivalent Gradle, dokontajnerovať našu aplikáciu jednoduchým príkazom:

kompilácia mvn com.google.cloud.tools:jib-maven-plugin:2.5.0:build -Dimage = $ IMAGE_PATH

kde IMAGE_PATH je cieľová cesta v registri kontajnerov.

Napríklad na nahranie obrázka baeldungjib / spring-jib-app do DockerHub, urobili by sme:

export IMAGE_PATH = register.hub.docker.com / baeldungjib / spring-jib-app

A je to! Týmto sa vytvorí ukotviteľný obraz našej aplikácie a posunie sa do DockerHub.

Môžeme, samozrejme,podobným spôsobom nahrajte obrázok do Google Container Registry alebo Amazon Elastic Container Registry.

6. Zjednodušenie príkazu Maven

Náš pôvodný príkaz tiež môžeme skrátiť nakonfigurovaním doplnku v našom pom namiesto toho, ako každý iný plugin maven.

 ... ... com.google.cloud.tools jib-maven-plugin 2.5.0 $ {image.path} ... ... 

Touto zmenou môžeme zjednodušiť náš príkaz maven:

mvn kompilovať výložník: zostaviť

7. Prispôsobenie aspektov Dockeru

Predvolene, Jib urobí množstvo rozumných odhadov o tom, čo chceme, ako FROM a ENTRYPOINT.

Urobme niekoľko zmien v našej aplikácii, ktoré sú konkrétnejšie pre naše potreby.

Po prvé, Spring Boot štandardne vystavuje port 8080.

Ale povedzme, že chceme, aby naša aplikácia bežala na porte 8082 a aby bola viditeľná prostredníctvom kontajnera.

V Boote samozrejme urobíme príslušné zmeny. A potom môžeme pomocou nástroja Jib urobiť snímku viditeľnú:

 ...   8082   

Alebo, povedzme, že potrebujeme inú FROM. V predvolenom nastavení Jib používa obraz Java bez distribúcie.

Ak chceme našu aplikáciu spustiť na inom základnom obrázku, napríklad alpine-java, môžeme ho nakonfigurovať podobným spôsobom:

 ... openjdk: vysokohorský ... 

Značky, zväzky a niekoľko ďalších smerníc Dockeru konfigurujeme rovnakým spôsobom.

8. Prispôsobenie aspektov Java

Asociácia, Jib tiež podporuje početné runtime konfigurácie Java:

  • jvmFlags slúži na označenie toho, aké príznaky spustenia sa majú odovzdať JVM.
  • mainClass je na označenie hlavnej triedy, ktorá Jib sa predvolene pokúsi odvodiť automaticky.
  • args je miesto, kde by sme určili programové argumenty odovzdané do hlavný metóda.

Samozrejme si nezabudnite pozrieť dokumentáciu Jib, aby ste videli všetky dostupné konfiguračné vlastnosti.

9. Záver

V tomto tutoriáli sme videli, ako vytvárať a publikovať obrázky ukotvenia pomocou nástroja Jib spoločnosti Google, vrátane toho, ako získať prístup k smerniciam ukotvenia a konfiguráciám runtime Java prostredníctvom Mavenu.

Ako vždy, zdrojový kód pre tento príklad je k dispozícii na stránkach Github.


$config[zx-auto] not found$config[zx-overlay] not found