Java alkalmazások dokkolása a Jib segítségével
1. Áttekintés
Ebben az oktatóanyagban megnézzük a Jib-et és hogyan egyszerűsíti a Java-alkalmazások tárolását.
Fogunk egy egyszerű Spring Boot alkalmazást, és elkészítjük a Docker képét a Jib segítségével. És akkor közzétesszük a képet egy távoli nyilvántartásban is.
És feltétlenül olvassa el a Spring Boot alkalmazások dokkolásával kapcsolatos oktatóanyagunkat is dockerfile és docker eszköz.
2. Bevezetés a Jib-be
Orrvitorla egy nyílt forráskódú Java eszköz, amelyet a Google fenntart a Java alkalmazások Docker képeinek felépítéséhez. Leegyszerűsíti a konténerbe szállítást, mivel vele együtt nem kell írnunk a dockerfile.
És valójában nem is kell dokkmunkás telepítve hogy mi magunk hozzuk létre és tegyük közzé a dokkoló képeket.
A Google közzéteszi a Jibet Maven és Gradle beépülő modulként egyaránt. Ez azért szép, mert ez azt jelenti, hogy a Jib minden építkezéskor észreveszi az alkalmazásunkon végrehajtott változtatásokat. Ez külön dokkoló build / push parancsokat takarít meg nekünk, és egyszerűbbé teszi ezek hozzáadását egy CI-folyamathoz.
Van még néhány más eszköz is, például a Spotify docker-maven-plugin és dockerfile-maven pluginjei, bár az előbbi már elavult, az utóbbi pedig egy dockerfile.
3. Egy egyszerű üdvözlő alkalmazás
Vegyünk egy egyszerű tavaszi indító alkalmazást, és dokkoljuk a Jib segítségével. Ez egy egyszerű GET végpontot tesz közzé:
// localhost: 8080 / üdvözlet
Amit egyszerűen elvégezhetünk egy Spring MVC vezérlővel:
@RestController public class GreetingController {private static final String template = "Hello Docker,% s!"; privát végleges AtomicLong számláló = új AtomicLong (); @GetMapping ("/ greeting") public Greeting greeting (@RequestParam (value = "name", defaultValue = "World") String name) {return new Greeting (counter.incrementAndGet (), String.format (template, name)) ; }}
4. A telepítés előkészítése
Helyileg is be kell állítanunk magunkat, hogy hitelesítsük a telepíteni kívánt Docker-lerakatban.
Ennél a példánál fogjuk nyújtsa be a DockerHub hitelesítő adatainkat .m2 / settings.xml:
register.hub.docker.com
A hitelesítő adatok megadásának más módjai is vannak. A Google által javasolt módszer a segítő eszközök használata, amelyek titkosított formátumban tárolhatják a hitelesítő adatokat a fájlrendszerben. Ebben a példában használhattunk volna dokkoló-hitelesítő segédeket ahelyett, hogy egyszerű szöveges hitelesítő adatokat tárolna a settings.xml, ami sokkal biztonságosabb, bár egyszerűen nem tartozik az oktatóanyag körébe.
5. Telepítés a Docker Hubba a Jib segítségével
Most már használhatjuk jib-maven-plugin, vagy a Gradle megfelelője, nak nektárolja az alkalmazásunkat egy egyszerű paranccsal:
mvn compile com.google.cloud.tools:jib-maven-plugin:2.5.0:build -Dimage = $ IMAGE_PATH
ahol az IMAGE_PATH a céltároló a tároló-nyilvántartásban.
Például a kép feltöltéséhez baeldungjib / spring-jib-app nak nek DockerHub, tennénk:
export IMAGE_PATH = register.hub.docker.com / baeldungjib / spring-jib-app
És ez az! Ez felépíti alkalmazásunk dokkoló képét, és a DockerHub.
Természetesenhasonló módon töltse fel a képet a Google Container Registry vagy az Amazon Elastic Container Registry alkalmazásba.
6. A Maven parancs egyszerűsítése
Rövidíthetjük a kezdeti parancsunkat a plugin konfigurálásával pom ehelyett, mint bármely más maven plugin.
... ... com.google.cloud.tools jib-maven-plugin 2.5.0 $ {image.path} ... ...
Ezzel a változtatással egyszerűsíthetjük a maven parancsunkat:
mvn compile jib: build
7. A Docker-szempontok testreszabása
Alapértelmezés szerint, Jib számos ésszerű találgatást tesz arra, hogy mit akarunk, mint a FROM és az ENTRYPOINT.
Végezzünk el néhány változtatást az alkalmazásunkban, amelyek jobban megfelelnek az igényeinknek.
Először a Spring Boot alapértelmezés szerint kiteszi a 8080-as portot.
De tegyük fel, hogy az alkalmazásunkat a 8082-es porton akarjuk futtatni, és tárolón keresztül teszik elérhetővé.
Természetesen a Boot-ban elvégezzük a megfelelő változtatásokat. Ezután pedig a Jib-et használhatjuk, hogy a képen láthatóvá tegyük:
... 8082
Vagy tegyük fel, hogy más FROM-ra van szükségünk. Alapértelmezés szerint Jib a terjesztés nélküli java képet használja.
Ha egy másik alapképen szeretnénk futtatni az alkalmazásunkat, mint például az alpine-java, akkor hasonló módon konfigurálhatjuk:
... openjdk: alpesi ...
Ugyanígy konfiguráljuk a címkéket, a köteteket és számos más Docker-irányelvet.
8. Java szempontok testreszabása
Egyesüléssel a Jib számos Java futásidejű konfigurációt is támogat:
- jvmFlags arra szolgál, hogy jelezze, milyen indítási zászlókat adjon át a JVM-nek.
- mainClass a fő osztály megjelölésére szolgál, amely Jib alapértelmezés szerint megpróbálja automatikusan következtetni.
- érvel itt adhatjuk meg a programnak átadott program argumentumokat fő- módszer.
Természetesen ellenőrizze a Jib dokumentációját, hogy megtekinthesse az összes rendelkezésre álló konfigurációs tulajdonságot.
9. Következtetés
Ebben az oktatóanyagban azt láthattuk, hogyan lehet dokkoló képeket készíteni és közzétenni a Google Jib segítségével, többek között arról, hogyan lehet hozzáférni a dokkoló irányelvekhez és a Java futásidejű konfigurációkhoz a Mavenen keresztül.
Mint mindig, ennek a példának a forráskódja elérhető a Githubon.