Kako spojiti proljetnu aplikaciju za podizanje sustava s Googleovim Jibom

Slika 1: Java docker slike bez trenja s Jibom!

Zdravo! Dok sam nedavno radio na platformi koja se temelji na proljeću, razmišljao sam kojim putem bih trebao dokoriti mikroservis. Tako sam naišao na Jib, prilično novi pristup pitanju koji je razvio Google.

Ovaj post govori o korištenju Jib-a, točnije jib-maven-plugina, za izgradnju spremnika proljetne aplikacije za dizanje.

Demo projekt korišten u ovom postu možete pronaći ovdje:

Što je Jib

Ono što Jib donosi tablici je da vam omogućuje stvaranje spremnika jednostavnim dodavanjem dodatka u aparat za sastavljanje po vašem izboru (Maven ili Gradle). Nema dodatnih datoteka, samo nekoliko redaka konfiguracije i on obrađuje sve korake pakiranja vaše aplikacije u sliku spremnika.

Svojim riječima Google cloud tima:

Jib je Googleov otvoreni izvorni spremnik Java koji omogućuje Java programerima da izrađuju spremnike koristeći Java alate koje poznaju. Ne zahtijeva da pišete Dockerfile ili imate instaliran docker, a on je izravno integriran u Maven i Gradle.

U "tradicionalnom" tijeku gradnje slike Java do Docker potreban nam je Dockerfile i instalirani docker demon, kao što je prikazano u nastavku:

Slika 2: Tradicionalni koraci za stvaranje slike doktora iz Java aplikacije.

Kao što dijagram pokazuje, u tijeku gradnje Jib jednostavno vam je potreban dodatak datoteku za izgradnju projekta:

Slika 3: Jib način za stvaranje slike doktora iz Java aplikacije.

Postaviti

Nije u ovom dosegu postavljanje Java razvojnog okruženja, ali pokušajmo!

  1. Obavezno instalirajte Java 8+.
  2. Koristit ćemo maven, pa ako nije prisutan, instalirajte maven 3.5+.
  3. Provjerite je li vam instaliran docker i ako koristite Linux, vaš korisnik ima pristup dockeru.
  4. Neka je vaš omiljeni IDE instaliran (pomrčina ili ideja).

Napravite osnovnu proljetnu aplikaciju za pokretanje sustava

To se može učiniti ili putem proljetnog inicijalizra, ili putem vašeg omiljenog IDE-a. Ako ste koristili proljetni inicijalizr, morat ćete uvesti novostvoreni projekt maven u svoj IDE (eclipse / idea).

Dodajte jib-maven-plugin na svoj pom.xml

Za vrlo osnovnu lokalno pohranjenu sliku vaše aplikacije konfigurirajte dodatak jib-maven u svom pom.xml na sljedeći način:

Sastavite aplikaciju i izgradite sliku

Sada možemo sastaviti aplikaciju i provjeriti je li slika stvorena u našem lokalnom skladištu doktora.

Preko terminala idite u korijensku mapu projekta i izvršite:

mvn sastaviti jib: dockerBuild

Zapisi maven gradnje trebaju sadržavati retke kao što je slijedeće:

[INFO] - - jib-maven-plugin: 0.10.1: dockerBuild (zadan-cli) @ spring-boot-jib - -
[INFO]
[INFO] Sadržaj aplikacije za Docker daemon kao springbootjib ...
[UPOZORENJE] Osnovna slika 'gcr.io/distroless/java' ne upotrebljava određeni pregled slika - sastavljanje se možda ne može ponoviti
[INFO] Dobivanje osnovne slike gcr.io/distroless/java…
[INFO] Sloj ovisnosti o izgradnji ...
[INFO] Sloj resursa za izgradnju…
[INFO] Sloj građenja klase…
[INFO] Dovršavanje ...
[INFO]
[INFO] Ulazna točka za spremnik postavljena je na [java, -cp, / app / resursi: / app / klase: / app / libs / *, com.jibdemo.SpringBootJibApplication]
[INFO] Učitavanje u Docker demonu ...
[INFO]
[INFO] Izgrađena je slika u Dockerovu demonu kao springbootjib

Sve dok nema grešaka i vidimo da je maven „Izgrađen image Dockerovom demonu kao Springbootjibu“ svi smo spremni.

Pokrenite sliku doktora

U ovom trenutku trebali bismo imati novu sliku doktora u našem lokalnom spremištu. Možemo provjeriti izvršenjem slike doktora ls i trebali bismo vidjeti sliku sličnu ovoj:

springbootjib najnoviji eb4bea693650 prije 3 sata 135MB

Primijetite vrlo malu (135mb) veličinu slike, što je zbog gcr.io/distroless/java slike koju Jib zadano koristi (vidjet ćemo kako to možemo promijeniti kasnije).

Tako sada možemo pokrenuti sliku kao i obično upisivanjem docker run -it springbootjib i provjeriti da li se aplikacija izvodi kako se očekivalo.

Konfiguriranje Jib dodatka za fino podešavanje naše Docker slike

Možemo dalje kopati dublje i konfigurirati Jib dodatak kako bismo uklopili nekoliko uobičajenih scenarija, poput prijave u docker spremište, otkrivanja portova, odabrali određenu osnovnu sliku itd.

Na primjer u sljedećoj konfiguraciji slika:

  • Izgrađena je iz baze openjdk: alpine (izvučeno iz Docker Hub-a)
  • Gura se na localhost: 5000 / springbootjib: 0.0.1-SNAPSHOT, localhost: 5000 / springbootjib: alpine, and localhost: 5000 / springbootjib: najnovije
  • Pokreće se pozivom Java -Xms256m -Xdebug -cp app / libs / *: app / resursi: app / klase com.jibdemo.SpringBootJibAplikacija nekih argumenata
  • Izlaže port 8001 za tcp (zadano), a portove 8002 i 8003 za udp
  • Ima oznaku (naziv: springbootjib)
  • Građen je u obliku OCI

Sada možete ponovno sastaviti sliku i vidjeti razliku u maven zapisima:

[INFO] --- jib-maven-plugin: 0.10.1: dockerBuild (zadan-cli) @ spring-boot-jib ---
[INFO]
[INFO] Sadržaj aplikacije za Dockerov demon kao localhost: 5000 / springbootjib: 0.0.1-SNAPSHOT, localhost: 5000 / springbootjib: alpine, localhost: 5000 / springbootjib ...
[INFO] Dobivanje osnovne slike openjdk: alpine ...
[INFO] Sloj izgradnje ovisnosti ...
[INFO] Sloj resursa za izgradnju ...
[INFO] Sloj građenja klase ...
[INFO] Osnovna slika zahtijeva auth. Pokušaj ponovo za openjdk: alpine ...
[INFO] Dohvaćanje vjerodajnica registra za register.hub.docker.com ...
[INFO] Dovršavanje ...
[INFO]
[INFO] Ulazna točka kontejnera postavljena na [java, -Xms256m, -Xdebug, -cp, / app / resursi: / app / klase: / app / libs / *, com.jibdemo.SpringBootJibApplication]
[INFO] Učitavanje u Dockerovu demonu ...
[INFO]
[INFO] Izgrađena slika na Dockerovom demonu kao localhost: 5000 / springbootjib: 0.0.1-SNAPSHOT, localhost: 5000 / springbootjib: alpine, localhost: 5000 / springbootjib

U segmentu dnevnika zabilježite da je dodatak izvukao sliku openjdk: alpine iz Docker Hub-a, sliku je izgradio u tri različito označene verzije i spremio ih u našem lokalnom spremištu.

Zašto sam pucao s Jibom

  • Ne trebate održavati Dockerfile, pokretati Docker demon, ili se čak brinuti oko stvaranja debelog JAR-a sa svim njegovim ovisnostima.
  • Iskorištava slojeve slike i predmemoriranje registra radi postizanja brzih, inkrementalnih gradnji.
  • Može se konfigurirati za stvaranje reproducibilnih slika gradnje sve dok vaši ulazi ne ostanu isti.

Zaključak

Koristeći druge maven dodatke poput onih iz spotifyja i fabric8 za izradu docker slika za java aplikacije, pozdravljam što je Google uzeo stvar. Potrebno joj je manje datoteka nego dodatka fabric8 i (po mom skromnom mišljenju) je lakše konfigurirati nego dodatak spotificirati. Svakako preporučam da ga isprobate!

Izjava o odricanju odgovornosti: Ovo nije članak za usporedbu, samo moje gledište na to podložno iz osobnog iskustva.

Uvijek možete pročitati više o Jib's github repo koji sadrži detaljne informacije o svim konfiguracijskim parametrima. Hvala vam što ste pročitali do sada! Nadam se da ste uživali! Slobodno ostavite svoje komentare ovdje.

O meni

Hej, hvala što ste svratili. Ja sam neovisni inženjer s punim stackom, koji naglašava stražnji kraj i devOps. Zanima me izrada prototipa / MVP-a i razvoj platformi koja razmjera u oblaku, opredjeljujući se za stvaranje poslovne vrijednosti.

Više o meni i mojoj priči možete pročitati ovdje. Ako želite razgovarati o poslu ili samo stupiti u kontakt, pošaljite mi e-mail: tasos.tsaousis@codedlines.com.