Twitter Youtube Github
Burak Kutbay'ın Kişisel Blog'u |

Type and hit Enter to search

  • Eğitim
  • Quarkus
  • Spring Cloud
  • Spring Boot
  • Spring JDBC Template
  • Spring MVC
  • RabbitMQ
  • Hibernate
  • Java Server Pages
  • Java Server Faces
  • PrimeFaces
  • Servlet
  • JDBC
  • JSTL
  • Java 8
  • / Diğer
    • Ünlü Bilişimciler
    • C Sharp
    • Kütüphane
    • Makale
DevOps

Jib ile Java Projelerini Verimli ve Hızlı Dockerize Etmek

Paylaş

Java uygulamalarımızı Dockerize etmek için neler yapmamız gerektiğini incelemiştik.

İçindekiler

  • Sorun Nedir?
  • fat jar Nedir?
  • OCI Katmanları
  • JIB Plugin
  • JIB Kullanmak

Bu yazıda ise projelerimizi daha hızlı bir şekilde dockerize etmek için Google tarafından geliştirilen bir maven eklentisinden bahsedeceğim. Bu eklentinin adı Jib.

Jib eklentisine neden ihtiyaç duyarız peki? Bunu açıklamak ile başlayalım.

Sorun Nedir?

Uygulamamızı “klasik” yöntem ile dockerize etmek istediğimiz zaman her seferinde tekrar ve tekrar .jar uygulamamız en baştan build olarak hem kaynak tüketimi, hem zaman tüketimi hem de “fat jar” denilen bir sorunla karşılaşıyoruz.

Çok küçük bir satırda yapılan bir değişiklik sonrasında bile dockerize etmek istediğimiz uygulamanın en baştan .jar üretmek kaynak ve zaman israfına yol açmaktadır.

fat jar Nedir?

fat jar kavramı uygulamamızın temel kütüphanelerini içeren ve business katmanındaki değişikliklerden etkilenmeden kullanılan bir çok kütüphaneyi kapsamaktadır. Örneği kullandığımız Spring kütüphanesi proje içerisinde hep bulunan ve her değişiklik sonrasında tekrar dockerize etmek bu kavramın temelini oluşturmaktadır. Uygulamada yapılan değişiklik 1 MB ancak uygulamanın boyutu 50 MB olabilir. Sadece değişikliğin yapıldığı dockerize edilmesi, diğer base kütüphanelerin değişmediği sürece tekrar dockerize olmamasını sağlamalıyız.

OCI Katmanları

İmaj oluşturulurken belirli katmanlardan geçerek oluşmaktadır. Bu katmanlar sayesinde fat.jar dediğimiz kısımı başka bir katmanda tutulurken sadece değişen kısım diğer katmanda dockerize olacak ve sadece değişen kısım dockerize olmasını sağlıyoruz. OCI katmanları yani Docker imajı oluştururkenki katmanlar hakkında detay isterseniz OCI Image Format Specification‘a bakabilirsiniz.

JIB Plugin

Jib plugin ise bu bahsettiğim tüm problemleri çözmemize olanak sağlıyor. Hem ayrıca bir docker kullanmıyoruz ve maven projesi içerisine build plugini olarak ekleyerek bu sorundan kurtuluyoruz.

Jib vs. Docker build flow (Image source Google Cloud)
Jib vs. Docker build flow (Image source Google Cloud)

JIB Kullanmak

Eğer docker hub’ı kullanacaksak;

maven dosya yolunun içerisinde docker bilgilerimizi tanımlamamız gerekmektedir. Dosya yolu ise; .m2/settings.xml

<servers>
    <server>
        <id>registry.hub.docker.com</id>
        <username><DockerHub Username></username>
        <password><DockerHub Password></password>
    </server>
</servers>Code language: HTML, XML (xml)

Uygulamamızın pom.xmliçerisinde build plugini olarak jib plugini ekliyoruz.

<project>
    <build>
        <plugins>
              <plugin>
                <groupId>com.google.cloud.tools</groupId>
                <artifactId>jib-maven-plugin</artifactId>
                <configuration>
                    <to>
                        <image>${image.path}</image>
                    </to>
                </configuration>
            </plugin>
        </plugins>
    </build>
 </project>Code language: HTML, XML (xml)

Uygulamamızı jib plugin kullanarak bir docker buildi almak ve docker’a göndermek için ise aşağıdaki komutu girmemiz gerekmektedir.

mvn compile com.google.cloud.tools:jib-maven-plugin:build -Dimage=$IMAGE_PATHCode language: PHP (php)

Tags:

dockerjib nedirjib plugin

Paylaş

Diğer Yazılar

Spring Boot MapStruct Kullanım Örneği
Previous

MapStruct Nedir? Spring Boot MapStruct Uygulama Örneği

Spring Boot GraphQL API Kullanımı
Next

Spring Boot GraphQL API Uygulama Örneği #1

Next
Spring Boot GraphQL API Kullanımı
24 Temmuz 2022

Spring Boot GraphQL API Uygulama Örneği #1

Previews
17 Haziran 2022

MapStruct Nedir? Spring Boot MapStruct Uygulama Örneği

Spring Boot MapStruct Kullanım Örneği

No Comment! Be the first one.

Bir cevap yazın Cevabı iptal et

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

İlgini Çekebilir

Docker Apache Kafka Broker Kurulumu

Docker ile Apache Kafka Kurulumu ve Kullanımı

blank

Docker Ports are not available: listen tcp bind: An attempt was made to access a socket in a way forbidden by its access permissions Hatası Çözümü

Burak Kutbay'ın Kişisel Blog'u |

© 2008 - ∞, Her hakkı saklıdır.

Link

  • Hakkımda
  • İletişim
  • Arşiv

Kategori

Cloud
Amazon Web Services
Vue.js
Gradle
Node.js
Android
Struts
Röportaj
Spring Cloud Stream
Redis
Debezium
XCode
Video
Spring Native
Mikroservis Mimarisi
iPhone Uygulama Geliştirme
MongoDB
PostgreSQL
Spring Security
JPA
Objective C
Spring Data
Apache Kafka
Git
Servlet
Yaptığım Projeler
Maven
Design Patterns
DevOps
Linux
JDBC
RabbitMQ
PrimeFaces
Spring Jdbc Template
Spring
Google
Manset
Spring MVC
Spring Cloud
OCA Java SE 8
Spring Core
Quarkus
Microsoft
Veritabanı
Java SE
Tanıyalım
Hibernate
Teknoloji
Okuduğum Kitaplar
Java Server Faces
Yazılım Mühendisliği
C Sharp
Spring Boot
Java
Günlüğüm
Java Server Page
Makale

Takip Et

Twitter Youtube Github
  • Eğitim
  • Quarkus
  • Spring Cloud
  • Spring Boot
  • Spring JDBC Template
  • Spring MVC
  • RabbitMQ
  • Hibernate
  • Java Server Pages
  • Java Server Faces
  • PrimeFaces
  • Servlet
  • JDBC
  • JSTL
  • Java 8
  • / Diğer
    • Ünlü Bilişimciler
    • C Sharp
    • Kütüphane
    • Makale