Kaip sujungti pavasarinę įkrovos programą su „Google Jib“

1 paveikslėlis: Trinties neturintys „Java“ dokų vaizdai su „Jib“!

Sveiki! Neseniai dirbdamas prie spyruoklinės platformos, aš galvojau, kokį kelią nustumti į mikroserviso doką. Taigi aš susidūriau su „Jib“, gana nauju požiūriu į šį klausimą, kurį sukūrė „Google“.

Šis įrašas yra skirtas naudoti „Jib“ ir, tiksliau, „jib-maven-plugin“, norint sukurti konteinerinę spyruoklinės įkrovos programą.

Šiame įraše panaudotą demonstracinį projektą galite rasti čia:

Kas yra Džibas

Tai, ką „Jib“ atneša prie stalo, yra tai, kad jis leidžia jums sukurti konteinerį tiesiog pridedant papildinį prie jūsų pasirinkto kūrimo įrankio („Maven“ ar „Gradle“). Jokių papildomų failų, tik kelios konfigūracijos eilutės. Jame pateikiami visi programos supakavimo į konteinerio vaizdą žingsniai.

„Google“ debesies komandos žodžiais:

„Jib“ yra „Google“ atvirojo kodo „Java“ konteinerių kaupiklis, leidžiantis „Java“ kūrėjams kurti konteinerius naudojant jiems žinomus „Java“ įrankius. Tai nereikalauja, kad jūs parašytumėte „Dockerfile“ ar būtumėte įdiegę „Docker“, ir jis yra tiesiogiai integruotas į „Maven“ ir „Gradle“.

„Tradiciniame“ „Java to Docker“ vaizdo kūrimo sraute mums reikia įdiegti „Dockerfile“ ir „Docker“ demoną, kaip parodyta žemiau:

2 paveikslėlis: tradiciniai doko vaizdo kūrimo iš „Java“ programos veiksmai.

Kaip parodyta diagramoje, „Jib build“ sraute jums tiesiog reikia papildinio, projekto projekto failo:

3 paveikslėlis: „Jib“ būdas sukurti doko atvaizdą iš „Java“ programos.

Sąranka

Šis pranešimas neįtrauktas į „Java“ kūrimo aplinkos sukūrimą, tačiau pažiūrėkime!

  1. Įsitikinkite, kad įdiegėte „Java 8+“.
  2. Mes naudosime „maven“, taigi, jei jo nėra, įdiekite „3.5“ ir naujesnę versiją.
  3. Įsitikinkite, kad esate įdiegę doką ir, jei naudojate „Linux“, jūsų vartotojas turi prieigą prie doko.
  4. Įdiekite savo mėgstamą IDE (užtemimas ar idėja).

Sukurkite pagrindinę spyruoklinės įkrovos programą

Tai galima padaryti per pavasario iniciatorių arba per mėgstamą IDE. Jei naudojote pavasario iniciatorių, turėsite importuoti naujai sukurtą „maven“ projektą į savo IDE (užtemimas / idėja).

Pridėkite „jib-maven-plugin“ į savo pom.xml

Norėdami gauti labai paprastą vietoje saugomą programos vaizdą, sukonfigūruokite „jib-maven-plugin“ pom.xml taip:

Sudarykite programą ir sukurkite vaizdą

Dabar galime sukurti programą ir patikrinti, ar vaizdas sukurtas mūsų vietiniame dokų saugykloje.

Per terminalą eikite į pagrindinį projekto aplanką ir vykdykite:

mvn kompiliuokite strėlę: dockerBuild

„Maven“ kūrimo žurnaluose turėtų būti tokios eilutės:

[INFO] - - „jib-maven-plugin“: 0.10.1: „dockerBuild“ (numatytasis „cli“) @ spring-boot-jib - -
[INFO]
[INFO] Pateikiama programa „Docker“ demonui kaip spyruoklinis batas ...
[ĮSPĖJIMAS] Pagrindiniame paveikslėlyje „gcr.io/distroless/java“ nenaudojamas konkretus vaizdų santrauka - sudėjimas gali būti neatkuriamas.
[INFO] Pagrindinio vaizdo gavimas gcr.io/distroless/java…
[INFO] Priklausomybių lygmens pastatas ...
[INFO] Šaltinių kūrimas ...
[INFO] Pastatų klasių sluoksnis ...
[INFO] Baigta ...
[INFO]
[INFO] Sudėtinio rodinio įvesties taškas nustatytas į [„Java“, –cp, / programa / ištekliai: / programa / klasės: / programa / libs / *, com.jibdemo.SpringBootJibApplication]
[INFO] Įkeliama į „Docker“ demoną ...
[INFO]
[INFO] „Docker“ demonui sukurtas vaizdas kaip spyruoklinis batas

Kol nėra klaidų ir pamatome, kad „matytą“ vaizdą į „Docker“ demoną kaip spyruoklinį batą “, mes visi esame pasiruošę.

Paleiskite doko vaizdą

Šiuo metu turėtume turėti naują dokininko vaizdą savo vietinėje saugykloje. Mes galime patikrinti vykdydami doko vaizdą ir turėtume pamatyti vaizdą, panašų į šį:

„springbootjib“ naujausias „eb4bea693650“ prieš 3 valandas 135 MB

Atkreipkite dėmesį į labai mažą (135 MB) vaizdo dydį, kurį lemia „gcr.io/distroless/java“ vaizdas, kurį „Jib“ naudoja pagal numatytuosius nustatymus (pamatysime, kaip vėliau tai pakeisti).

Taigi dabar galime paleisti vaizdą kaip įprasta įvesdami „docker run -it springbootjib“ ir patikrinti, ar programa veikia taip, kaip tikėtasi.

„Jib“ papildinio konfigūravimas, kad būtų patobulintas mūsų „Docker“ vaizdas

Galime įsigilinti ir sukonfigūruoti „Jib“ papildinį, kad tilptų keli įprasti scenarijai, tokie kaip prisijungimas prie doko saugyklos, prievadų eksponavimas, konkretaus bazinio vaizdo pasirinkimas ir pan.

Pavyzdžiui, esant tokiai konfigūracijai vaizdas:

  • Pastatytas iš openjdk pagrindo: alpinis (ištrauktas iš „Docker Hub“)
  • Stumiama į „localhost“: 5000 / springbootjib: 0.0.1-SNAPSHOT, localhost: 5000 / springbootjib: alpine, ir localhost: 5000 / springbootjib: vėliausia
  • Veikia skambinant „java“ -Xms256m -Xdebug -cp app / libs / *: app / ištekliai: app / class com.jibdemo.SpringBootJibApplication some args
  • Pateikia 8001 prievadą tcp (numatytasis), o 8002 ir 8003 prievadus „udp“
  • Turi etiketę (vardas: springbootjib)
  • Sukurtas kaip OCI formatas

Dabar galite vėl sukurti vaizdą ir pamatyti skirtumus tarp „maven“ žurnalų:

[INFO] --- „stribo-maven“ papildinys: 0.10.1: „dockerBuild“ (numatytasis „cli“) @ spyruoklė – įkrovos jungtis --–
[INFO]
[INFO] Taikomoji programa „Docker“ demonui kaip „localhost“: 5000 / springbootjib: 0.0.1-SNAPSHOT, localhost: 5000 / springbootjib: alpine, localhost: 5000 / springbootjib ...
[INFO] Gaunamas pagrindinis vaizdas openjdk: alpinis ...
[INFO] Priklausomybių sluoksnio kūrimas ...
[INFO] Šaltinių kūrimas ...
[INFO] Pastatų klasių lygmuo ...
[INFO] Baziniam vaizdui reikalinga autentiškumas. Bandoma dar kartą „openjdk“: alpinis ...
[INFO] Gaunami registro.hub.docker.com registracijos duomenys ...
[INFO] Baigta ...
[INFO]
[INFO] Sudėtinio rodinio įvesties taškas nustatytas į „Java“, -Xms256m, -Xdebug, -cp, / app / ištekliai: / app / class: / app / libs / *, com.jibdemo.SpringBootJibApplication]
[INFO] Įkeliama į „Docker“ demoną ...
[INFO]
[INFO] „Docker“ demonui sukurtas vaizdas kaip „localhost“: 5000 / springbootjib: 0.0.1-SNAPSHOT, localhost: 5000 / springbootjib: alpine, localhost: 5000 / springbootjib

Aukščiau esančiame žurnalo segmente pastebėkite, kad papildinys iš „Docker Hub“ ištraukė atvaizdą „openjdk: alpine“, sukūrė vaizdą į tris skirtingai pažymėtas versijas ir išsaugojo juos mūsų vietiniame saugykloje.

Kodėl aš fotografavau su Džibu

  • Jums nereikia prižiūrėti „Dockerfile“, paleisti „Docker“ demono ar net nerimauti dėl riebaus JAR sukūrimo su visomis jo priklausomybėmis.
  • Pasinaudoja vaizdo sluoksniavimo ir registravimo talpykloje privalumais, kad būtų galima greitai, palaipsniui kurti.
  • Gali būti sukonfigūruotas taip, kad sukurtų atkuriamus vaizdo vaizdus, ​​jei jūsų įvestys nesikeis.

Išvada

Naudodama kitus „maven“ papildinius, tokius kaip „spotify“ ir „fabric8“, kurti „doc“ vaizdus „Java“ programoms, džiaugiuosi, kad „Google“ ėmėsi šio reikalo. Jam reikia mažiau failų nei „fabric8“ papildinys, ir (mano nuolankiomis nuomonėmis) jį lengviau konfigūruoti nei „spotify“ papildinį. Aš tikrai rekomenduoju pabandyti!

Atsisakymas: Tai nėra palyginimo straipsnis, tiesiog mano požiūris į šį klausimą paremtas asmenine patirtimi.

Visada galite perskaityti daugiau apie „Jib“ „github“ repo, kuriame yra išsami informacija apie visus konfigūracijos parametrus. Ačiū, kad perskaitėte taip toli! Tikiuosi jums patiko! Nesivaržykite palikti savo atsiliepimų čia.

Apie mane

Ei, ačiū, kad sustojote. Aš esu nepriklausomas pilna kamino inžinierius, pabrėždamas galinį ir devOps. Mane domina prototipų / MVP kūrimas ir debesų mastelio platformų kūrimas, kuriant verslo vertę.

Daugiau apie mane ir mano istoriją galite perskaityti čia. Jei norite aptarti verslą ar tiesiog susisiekite, atsiųskite man el. Laišką: tasos.tsaousis@codedlines.com.