Kā dokumentēt pavasara sāknēšanas lietotni, izmantojot Google ierīci Jib

1. attēls: bez berzes java dokotāju attēli ar džibu!

Sveiki! Nesen strādājot pie atsperu platformas, es apsvēru, kā izvēlēties mikropakalpojumu pievienošanu dakterim. Tāpēc es saskāros ar Jib, diezgan jaunu pieeju šajā jautājumā, kuru izstrādāja Google.

Šī ziņa ir par Jib un, precīzāk, spraudņa Jib-Maven izmantošanu, lai izveidotu konteinerizētu pavasara sāknēšanas lietojumprogrammu.

Šajā amatā izmantotais demonstrācijas projekts ir atrodams šeit:

Kas ir Jib

Ko Jib sniedz galdam, ir tas, ka tas ļauj izveidot konteineru, vienkārši pievienojot spraudni jūsu izvēlētajam būvēšanas rīkam (Maven vai Gradle). Bez papildu failiem, tikai dažas konfigurācijas līnijas, un tas veic visas darbības, lai jūsu lietojumprogrammu iesaiņotu konteinera attēlā.

Ar Google mākoņa komandas vārdiem:

Jib ir Google atvērtā koda Java konteineru rīks, kas ļauj Java izstrādātājiem veidot konteinerus, izmantojot viņiem zināmus Java rīkus. Tas neprasa, lai jūs rakstītu Dockerfile vai būtu instalēts dokotājs, un tas ir tieši integrēts Maven un Gradle.

“Tradicionālajā” Java līdz Docker attēlu veidošanas plūsmā mums ir jāinstalē Dockerfile un Docker dēmons, kā parādīts zemāk:

2. attēls: tradicionālās piestātnes attēla izveides darbības no Java lietotnes.

Kā norādīts diagrammā, Jib būvēšanas plūsmā jums vienkārši ir nepieciešams spraudnis, kurā tiek izveidots projekta izveidošanas fails:

3. attēls: Jib veids, kā izveidot dokotāja attēlu no Java lietotnes.

Uzstādīt

Java izstrādes vides iestatīšana neietilpst šajā amatā, bet pamēģināsim to!

  1. Pārliecinieties, vai esat instalējis Java 8+.
  2. Mēs izmantosim maven, tāpēc, ja tāda nav, instalējiet maven 3.5+.
  3. Pārliecinieties, vai esat instalējis piestātni un, ja izmantojat Linux, lietotājam ir piekļuve piestātnei.
  4. Vai esat instalējis savu iecienīto IDE (aptumsums vai ideja).

Izveidojiet pamata pavasara sāknēšanas lietojumprogrammu

To var izdarīt, izmantojot pavasara iniciatoru, vai izmantojot savu iecienīto IDE. Ja izmantojāt pavasara iniciatoru, jums IDE būs jāimportē jaunizveidotais maven projekts (aptumsums / ideja).

Pievienojiet spraudni jib-maven savam pom.xml

Lai iegūtu ļoti vienkāršu vietēji saglabātu jūsu lietotnes attēlu, pom.xml konfigurējiet spraudni jib-maven šādi:

Apkopojiet lietotni un izveidojiet attēlu

Tagad mēs varam izveidot lietojumprogrammu un pārbaudīt, vai attēls ir izveidots mūsu vietējā dokētāja krātuvē.

Izmantojot termināli, dodieties uz projekta saknes mapi un izpildiet:

mvn sastādīt jib: dockerBuild

Maven būvēšanas žurnālos jābūt šādām rindām:

[INFO] - - spraudnis ar spraudni: 0.10.1: dockerBuild (noklusējuma cli) @ atspere-sāknēšanas spraudnis - -
[INFO]
[INFO] Lietojumprogrammas pievienošana Docker dēmonam kā atsperbootjibs…
[BRĪDINĀJUMS] Pamattēlā “gcr.io/distroless/java” netiek izmantots īpašs attēlu kopsavilkums - būvēšana, iespējams, nav reproducējama.
[INFO] Pamattēla iegūšana gcr.io/distroless/java…
[INFO] Atkarību līmeņu veidošana ...
[INFO] Resursu slānis ...
[INFO] Ēku klašu slānis…
[INFO] Notiek pabeigšana ...
[INFO]
[INFO] Konteinera ieejas punkts ir iestatīts uz [java, -cp, / app / resursi: / app / class: / app / libs / *, com.jibdemo.SpringBootJibApplication]
[INFO] Notiek pievienošana Docker dēmonam ...
[INFO]
[INFO] Iebūvēts attēls Docker dēmonam kā atsperbootjibs

Kamēr nav kļūdu un mēs redzam, ka mēs visi esam gatavi “iebūvētu attēlu Dokera dēmonam kā atsperbootjibu”.

Palaidiet dokotāja attēlu

Šajā brīdī mums vajadzētu būt jaunajam dokētāja attēlam mūsu vietējā krātuvē. Mēs varam pārbaudīt, izpildot dokotāja attēlu ls, un mums vajadzētu redzēt attēlu, kas līdzīgs šim:

springbootjib jaunākais eb4bea693650 pirms 3 stundām 135 MB

Ievērojiet ļoti mazo (135 MB) attēla izmēru, kas ir saistīts ar gcr.io/distroless/java attēlu, kuru Jib izmanto pēc noklusējuma (redzēsim, kā to vēlāk mainīt).

Tāpēc tagad mēs varam palaist attēlu kā parasti, ierakstot docker run -it springbootjib un pārbaudot, vai lietotne darbojas, kā paredzēts.

Jib spraudņa konfigurēšana, lai precīzi noregulētu mūsu Docker attēlu

Mēs varam padziļināties un konfigurēt Jib spraudni tālāk, lai tas ietilptu vairākos izplatītos scenārijos, piemēram, pieteikšanās dokētāja krātuvē, portu eksponēšana, konkrēta bāzes attēla izvēle utt.

Piemēram, šādā konfigurācijā attēls:

  • Tiek būvēts no openjdk bāzes: Alpu (izvilkts no Docker Hub)
  • Tiek ievietots vietējā serverī: 5000 / springbootjib: 0.0.1-SNAPSHOT, localhost: 5000 / springbootjib: kalnu, un localhost: 5000 / springbootjib: vēlākais
  • Darbojas, piezvanot java -Xms256m -Xdebug -cp app / libs / *: app / resursi: app / class com.jibdemo.SpringBootJibApplication some args
  • Pakļauj tcp (noklusējuma) portu 8001 un udp 8002 un 8003 portu
  • Tam ir etiķete (nosaukums: springbootjib)
  • Tiek veidots kā OCI formāts

Tagad jūs varat atkal izveidot attēlu un redzēt atšķirības logos:

[INFO] --- strēles-maven-spraudnis: 0.10.1: dockerBuild (noklusējuma-cli) @ spring-boot-jib ---
[INFO]
[INFO] Konteineru lietojumprogramma Docker dēmonam kā lokālais disks: 5000 / springbootjib: 0.0.1-SNAPSHOT, localhost: 5000 / springbootjib: kalnu, localhost: 5000 / springbootjib ...
[INFO] Tiek iegūts bāzes attēls openjdk: Alpine ...
[INFO] Atkarību slāņa veidošana ...
[INFO] Resursu slāņa veidošana ...
[INFO] Ēku klases slānis ...
[INFO] Bāzes attēlam nepieciešama autentifikācija. Mēģinu vēlreiz OpenJDK: Alpu ...
[INFO] Notiek reģistra akreditācijas datu iegūšana vietnei register.hub.docker.com ...
[INFO] Notiek pabeigšana ...
[INFO]
[INFO] Konteinera ieejas punkts iestatīts uz [java, -Xms256m, -Xdebug, -cp, / app / resursi: / app / class: / app / libs / *, com.jibdemo.SpringBootJibApplication]
[INFO] Notiek pievienošana Docker dēmonam ...
[INFO]
[INFO] Iebūvēts attēls Docker dēmonam kā lokālais disks: 5000 / springbootjib: 0.0.1-SNAPSHOT, localhost: 5000 / springbootjib: kalnu, localhost: 5000 / springbootjib

Iepriekš žurnāla segmentā pamanīts, ka spraudnis no Docker Hub izvilka attēlu openjdk: alpine, izveidoja attēlu trim atšķirīgi marķētām versijām un saglabāja tos mūsu vietējā krātuvē.

Kāpēc es uzņēmu kadru ar Džibu

  • Jums nav jāuztur Dockerfile, jāvada Docker dēmons vai pat nav jāuztraucas par tauku JAR izveidošanu ar visām tā atkarībām.
  • Izmanto attēlu slānis un reģistra kešatmiņu, lai panāktu ātru, pakāpenisku palielināšanu.
  • Var konfigurēt, lai izveidotu reproducējamus iebūves attēlus, ja vien jūsu ieejas nemainās.

Secinājums

Izmantojot java spraudņus, piemēram, no spotify un fabric8, lai izveidotu doku attēlus Java lietotnēm, es atzinīgi vērtēju to, ka Google uzņemas šo lietu. Tam nepieciešams mazāk failu nekā fabric8 spraudnis, un (manuprāt, pazemīgs viedoklis) tas ir vieglāk konfigurējams nekā spotify spraudnis. Es noteikti iesaku pamēģināt!

Atsaukums: Šis nav salīdzināšanas raksts, tikai mans viedoklis par šo lietu, balstoties uz personīgo pieredzi.

Jūs vienmēr varat lasīt vairāk vietnē Jib's github repo, kurā ir pilnīga informācija par visiem konfigurācijas parametriem. Paldies, ka lasījāt tik tālu! Es ceru, ka jums patika! Lūdzu, atstājiet šeit savas atsauksmes.

Par mani

Hei, paldies, ka apstājāties. Es esmu neatkarīgs pilna kaudze inženieris, uzsverot aizmugurē un devOps. Esmu ieinteresēts izveidot prototipus / MVP un attīstīt platformas, kas mērogojas mākonī, izvēloties radīt biznesa vērtību.

Plašāk par mani un manu stāstu varat lasīt šeit. Ja vēlaties apspriest uzņēmējdarbību vai vienkārši sazināties, atsūtiet man e-pastu: tasos.tsaousis@codedlines.com.