Spring Boot Docker Entegrasyonu

21 Şubat 20253 dk okuma

Spring Boot Docker Entegrasyonu

Spring Boot, Docker, Buildpacks ve Jib kullanarak uygulamaları verimli bir şekilde konteynerleştirmek için birden fazla yöntem sunar. Bu kılavuz, Spring Boot uygulamalarını Docker kullanarak oluşturma ve dağıtma süreçlerini ele almaktadır.


🌟 Neden Spring Boot İçin Docker Kullanmalıyız?

  • Taşınabilir Dağıtım: Uygulamaları farklı ortamlar arasında tutarlı bir şekilde çalıştırın.
  • Ölçeklenebilirlik: Konteynerleştirilmiş uygulamaları kolayca ölçeklendirin ve yönetin.
  • Hafif ve Verimli: Kaynak kullanımını optimize ederek gereksiz yükü azaltın.
  • DevOps Uyumlu: CI/CD pipeline hatlarına sorunsuz şekilde entegre edin.

🌟 Gereksinimler

Aşağıdaki bileşenlere sahip olduğunuzdan emin olun:

  • Java Geliştirme Kiti (JDK) 17+
  • 📦 Maven veya Gradle
  • 🐳 Docker yüklü ve çalışır durumda

🛠️ Adım 1: Bağımlılıkları Ekleyin

Docker desteğini etkinleştirmek için Spring Boot Maven Plugin, Jib Plugin ve Spring Boot Web Starter eklentilerini yapılandırma dosyanıza ekleyin.

Maven Yapılandırması:

<dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> </dependencies> <build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> </plugin> <plugin> <groupId>com.google.cloud.tools</groupId> <artifactId>jib-maven-plugin</artifactId> <version>3.3.2</version> </plugin> </plugins> </build>

Gradle Yapılandırması:

plugins { id 'org.springframework.boot' version '3.2.0' id 'com.google.cloud.tools.jib' version '3.3.2' } dependencies { implementation 'org.springframework.boot:spring-boot-starter-web' }

📖 Adım 2: Basit Bir Spring Boot Uygulaması Oluşturun

Docker konteyneri içinde dağıtılacak bir REST uç noktası tanımlayın.

package com.example.docker; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RestController; @SpringBootApplication @RestController public class DockerApplication { public static void main(String[] args) { SpringApplication.run(DockerApplication.class, args); } @GetMapping("/hello") public String hello() { return "Docker üzerinde çalışan Spring Boot uygulamasından merhaba!"; } }
package com.example.docker import org.springframework.boot.autoconfigure.SpringBootApplication import org.springframework.boot.runApplication import org.springframework.web.bind.annotation.GetMapping import org.springframework.web.bind.annotation.RestController @SpringBootApplication @RestController class DockerApplication { @GetMapping("/hello") fun hello(): String = "Docker üzerinde çalışan Spring Boot uygulamasından merhaba!" } fun main(args: Array<String>) { runApplication<DockerApplication>(*args) }

🐳 Adım 3: Docker İmajı Oluşturma ve Çalıştırma

Seçenek 1: Buildpacks Kullanarak

Spring Boot, Buildpacks ile Dockerfile kullanmadan Docker imajları oluşturmayı destekler.

mvn spring-boot:build-image
gradle bootBuildImage

Konteyneri çalıştırın:

docker run --rm -p 8080:8080 myproject:0.0.1-SNAPSHOT

Seçenek 2: Jib Kullanarak

Jib, Docker daemon olmadan optimize edilmiş konteyner imajları oluşturmayı sağlar.

mvn jib:dockerBuild
gradle jibDockerBuild

Jib ile oluşturulan konteyneri çalıştırın:

docker run --rm -p 8080:8080 myproject:0.0.1-SNAPSHOT

▶️ Uygulamayı Çalıştırma

Konteyner çalıştırıldıktan sonra, REST API'yi test edin:

curl -X GET http://localhost:8080/hello

Beklenen Çıktı:

Docker üzerinde çalışan Spring Boot uygulamasından merhaba!

Spring Boot, uygulamaları verimli bir şekilde konteynerleştirmek için birden fazla yöntem sunar. Buildpacks basit kullanım sağlarken, Jib optimize edilmiş imaj oluşturmayı destekler. Spring Boot uygulamalarını Docker ile kolayca paketleyip dağıtabilirsiniz.