Google-ning Jib-da bahorni yuklash dasturini qanday dockerizatsiya qilish

1-rasm: Jib bilan ishqalanmaydigan java doker rasmlari!

Salom! Yaqinda bahorga asoslangan platformada ishlayotganda, mikroservisni qanday dockerizatsiya qilish haqida o'ylay boshladim. Shunday qilib, men Google tomonidan ishlab chiqilgan bu masalaga mutlaqo yangi bo'lgan Jibni ko'rdim.

Ushbu post konteynerli bahor yuklash dasturini yaratish uchun Jib-dan va aniqroq jib-maven-plagindan foydalanish haqida.

Ushbu postda ishlatilgan demo loyihani bu erda topish mumkin:

Jib nima

Jibni stolga olib keladigan narsa shundaki, u sizning tanlagan vositangizga (Maven yoki Gradle) plagin qo'shib konteyner yaratishga imkon beradi. Qo'shimcha fayllar yo'q, faqat bir necha satr konfiguratsiya va u konteyner rasmiga ilovangizni qadoqlashning barcha bosqichlarini ko'rib chiqadi.

Google bulut jamoasi o'z so'zlari bilan:

Jib - bu Google-dan Java-ga ishlab chiqaruvchilarga o'zlari bilgan Java vositalari yordamida konteynerlar qurishga imkon beradigan ochiq manbali Java konteynerlari. Dockerfaylni yozishingiz yoki doker o'rnatishingiz shart emas va u to'g'ridan-to'g'ri Maven va Gradle-ga birlashtirilgan.

Rasmlarni yaratish uchun "an'anaviy" Java-ga Dockerfile va quyida ko'rsatilganidek, Dockerfile o'rnatilgan.

Image 2: Java dasturidan doker tasvirini yaratish uchun an'anaviy qadamlar.

Diagrammada ko'rsatilgandek, Jib build oqimida sizga loyihani yaratish fayli plagin kerak bo'ladi:

3-rasm: Java dasturidan doker tasvirini yaratish uchun Jib usuli.

Sozlash

Ushbu Java dasturini ishlab chiqish muhitini yaratish ushbu xabarning doirasiga kirmaydi, lekin buni unga etkazaylik!

  1. Java 8+ o'rnatilganligiga ishonch hosil qiling.
  2. Biz maven-dan foydalanamiz, shuning uchun mavjud bo'lmasa, o'rnatish moslamasi 3.5+.
  3. Docker o'rnatilganligiga ishonch hosil qiling va agar Linux-dan foydalanayotgan bo'lsangiz, foydalanuvchi docker-ga ulangan.
  4. Sevimli IDE-ni o'rnatib qo'ying (tutilish yoki g'oya).

Asosiy bahor dasturini yarating

Buni bahor boshlang'ich dasturi yoki sevimli IDE orqali amalga oshirish mumkin. Agar siz bahor boshlang'ich dasturidan foydalansangiz, yangi yaratilgan ma'dan loyihasini IDE-ga (tutilish / g'oya) import qilishingiz kerak bo'ladi.

Pom.xml-ga jib-maven-plaginini qo'shing

Ilovangizning juda oddiy saqlanadigan tasviri uchun, pom.xml-dagi jib-maven-plaginini quyidagicha sozlang:

Ilovani tuzing va rasmni yarating

Endi biz dasturni qura olamiz va rasm bizning mahalliy docker omborimizda yaratilganligini tekshiramiz.

Terminal orqali loyihaning asosiy papkasiga o'ting va quyidagilarni bajaring:

mvn compile jib: dockerBuild

Maven tuzilish jurnallari quyidagi kabi qatorlarni o'z ichiga olishi kerak:

[INFO] - - jib-maven-plagin: 0.10.1: dockerBuild (standart-cli) @ bahor-yuklash-jib - -
[INFO]
[INFO] Docker demon-ga springbootjib sifatida konteynerli dastur ...
[OGOHLANTIRISH] 'gcr.io/distroless/java' asosiy tasvirida ma'lum bir tasvirni ishlatilmaydi - qurish qayta tiklanmasligi mumkin.
[INFO] Asosiy rasm olinmoqda gcr.io/distroless/java…
[INFO] Qurilish qaramlik qatlami ...
[INFO] Qurilish manbalari qatlami ...
[INFO] Qurilish sinflari qatlami ...
[INFO] Yakunlanmoqda ...
[INFO]
[INFO] Konteyner kirish nuqtasi [java, -cp, / app / resources: / app / class: / app / libs / *, com.jibdemo.SpringBootJibApplication] ga o'rnatildi
[INFO] Docker-ga yuklanmoqda ...
[INFO]
[INFO] Docker demoniga springbootjib sifatida qurilgan

Hech qanday xato yo'q va biz "Docker Daem uchun springbootjib kabi qurilgan tasvir" ni ko'rib turibmiz.

Docker rasmini ishga tushiring

Ushbu joyda biz mahalliy omborimizda yangi doker tasviriga ega bo'lishimiz kerak. Biz doker tasvir ls-ni bajarish orqali tekshirishimiz mumkin va biz shunga o'xshash rasmni ko'rishimiz kerak:

springbootjib so'nggi eb4bea693650 3 soat oldin 135MB

Jib sukut bo'yicha ishlatadigan gcr.io/distroless/java rasmiga bog'liq bo'lgan juda kichik (135 mm) rasm hajmiga e'tibor bering (bundan keyin qanday o'zgartirishimiz mumkinligini bilib olamiz).

Shunday qilib, endi biz docker run -it springbootjib yozib, odatdagidek rasmni ishga tushirishimiz va ilova kutilganidek ishlayotganligini tekshirishimiz mumkin.

Jok plaginini Docker rasmimizni yaxshi sozlash uchun sozlash

Biz yana chuqur qazishimiz va Jib plaginini konfiguratsiya qilishimiz mumkin, masalan docker omboriga kirish, portlarni ochish, ma'lum bir asosiy rasmni tanlash va hk.

Masalan, quyidagi konfiguratsiyadagi rasm:

  • Openjdk asosidan qurilgan: alp (Docker Hub dan olingan)
  • Localhost-ga itariladi: 5000 / springbootjib: 0.0.1-SNAPSHOT, localhost: 5000 / springbootjib: alp, va localhost: 5000 / springbootjib: so'nggi
  • Java -Xms256m -Xdebug -cp app / libs / *: app / resources: app / sinflar com.jibdemo.SpringBootJibApplication ba'zi argularni chaqirish orqali ishlaydi
  • Bosib chiqarish uchun 8001 port (standart) va UPS uchun 8002 va 8003 portlari ta'sir qiladi
  • Yorliqqa ega (nomi: springbootjib)
  • OCI formatida yaratilgan

Endi siz rasmni yana yarata olasiz va ishlangan jurnallardagi farqni ko'rishingiz mumkin:

[INFO] --- jib-maven-plagin: 0.10.1: dockerBuild (standart-cli) @ spring-boot-jib ---
[INFO]
[INFO] Docker demoniga mahalliyhost sifatida konteynerli dastur: 5000 / springbootjib: 0.0.1-SNAPSHOT, localhost: 5000 / springbootjib: alp, localhost: 5000 / springbootjib ...
[INFO] openjdk: alp tog 'rasmini olish ...
[INFO] Qurilish qaramlik qatlami ...
[INFO] Qurilish manbalari qatlami ...
[INFO] Qurilish sinflari qatlami ...
[INFO] Asosiy rasm haqiqiylikni talab qiladi. Openjdk uchun yana urinilmoqda: alp tog'lari ...
[INFO] registry.hub.docker.com uchun ro'yxatga olish ma'lumotlari olinmoqda ...
[INFO] Yakunlanmoqda ...
[INFO]
[INFO] Konteyner kirish nuqtasi [java, -Xms256m, -Xdebug, -cp, / app / resources: / app / class: / app / libs / *, com.jibdemo.SpringBootJibApplication] ga o'rnatildi
[INFO] Docker-ga yuklanmoqda ...
[INFO]
[INFO] Docker demoniga mahalliyhost sifatida qurilgan: 5000 / springbootjib: 0.0.1-SNAPSHOT, localhost: 5000 / springbootjib: alp, localhost: 5000 / springbootjib

Yuqoridagi jurnal segmentida plagin ochjdk rasmini tortganiga e'tibor bering: Docker uyasidan alp, tasvirni uchta har xil yorliqli versiyalarga qurdi va ularni mahalliy omborimizda saqladi.

Nega Jib bilan tortishib qoldim

  • Dockerfile-ni saqlab qolish, Docker demonini ishga tushirish yoki hatto barcha qaramliklari bilan semiz JAR yaratish haqida tashvishlanishga hojat yo'q.
  • Tez va bosqichma-bosqich tuzilishiga erishish uchun rasmni tekislash va ro'yxatga olish kitobi keshidan foydalanish.
  • Qayta tiklanadigan tasvirlarni yaratish uchun sizning ma'lumotlaringiz bir xil bo'lib turishi uchun sozlanishi mumkin.

Xulosa

Java dasturlari uchun doker tasvirlarini yaratish uchun spotify va даавor8 kabi boshqa o'yilgan plaginlardan foydalangan holda, men Google bu masala bo'yicha ishlashini kutib qolaman. Fayl88 plaginiga qaraganda kamroq fayl talab qilinadi va (mening fikrimcha) spotify plaginiga qaraganda sozlash osonroq. Albatta sinab ko'rishni tavsiya etaman!

Rad etish: Bu taqqoslash maqolasi emas, bu mening shaxsiy tajribamdan kelib chiqqan masala bo'yicha mening nuqtai nazarim.

Siz har doim batafsil konfiguratsiya parametrlari to'g'risida to'liq ma'lumotga ega bo'lgan Jib-ning gitub-repo-da o'qishingiz mumkin. Hozirgacha o'qiganingiz uchun tashakkur! Umid qilamanki, sizga yoqdi! Fikr-mulohazalaringizni shu erda qoldiring.

Men haqimda

Hey, to'xtaganingiz uchun rahmat. Men orqa va devOpsni ta'kidlab, mustaqil to'liq stack muhandisiman. Men prototiplar / MVPlarni yaratishga va biznes qiymatini yaratishni tanlab, bulutda kengayib boradigan platformalarni ishlab chiqishga qiziqaman.

Men va mening hikoyam haqida ko'proq ma'lumotni bu erda o'qishingiz mumkin. Agar siz biznesni muhokama qilmoqchi bo'lsangiz yoki shunchaki bog'lanmoqchi bo'lsangiz, menga elektron pochta manzilini yuboring: tasos.tsaousis@codedlines.com.