Spring Boot Uygulamasını Docker Konteynerı Haline Getirmek

Spring Boot Uygulamasını Docker Konteynerı Haline Getirmek




Basit bir Sp
ring Boot uygulamasının nasıl Docker konteynerı yapıldığını inceleyeceğiz.


İlk olarak sadece bir tane endpoint’i olan bir Spring Boot uygulaması oluşturuyoruz. Uygulamamızın çalışabilmesi için sadece aşağıdaki bağımlılığı eklememiz yeterlidir.

<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
https://gist.githubusercontent.com/mtnaln/53422a5718267fb44b79d17f7802ab94/raw/c10b9df232b4f910cd6df611a3897e23a6153880/HelloController.java
Uygulamamıza bir tane Dockerfile adında bir dosya oluşturuyoruz. Dosyanın adı Dockerfile olmalı ve uzantısı olmamalıdır.

Dockerfile dosyasının içeriği aşağıdaki gibidir.

FROM openjdk:8-jdk-alpine
COPY target/docker-spring-boot-0.0.1-SNAPSHOT.jar app.jar
ENTRYPOINT ["java","-jar","/app.jar"]
  1. satırda, java uygulamamın çalışabilmesi için gereken base bir image kullanılmaktadır.
  2. satırda, target klasörünün altında oluşturulmuş olan docker-spring-boot-0.0.1-SNAPSHOT.jar isimli dosyamızı app.jar ismiyle docker ortamına kopyalıyoruz.
  3. satırdaki, java -jar /app.jar komutu ise uygulamamızın ayağa kalkmasını sağlar.

Aşağıdaki Maven komutunu kullanarak uygulamamızın jar uzantılı dosyasını oluşturabiliriz. İlgili dosya, target klasörünün altında oluşacaktır.
mvn clean package

Eğer target klasörünün altında jar uzantılı dosya oluştuysa Maven komutu sorunsuz bir biçimde çalıştığı anlamına gelir. Örneğin, benim uygulamamda target klasörünün altında docker-spring-boot-0.0.1-SNAPSHOT.jar isimli bir dosya oluştu.

Uygulamamızın image’ını oluşturmak için aşağıdaki komutu çalıştıralım.
docker build --tag=docker-spring-boot:v1.1 .

image’ın kontrol etmek için aşağıdaki komutu kullanabilirsiniz.
docker image ls

docker image ls

Image’ları listelediğimde sadece az önce oluşturduğumuz image görüntülenmektedir.

--tag ifadesindeki iki nokta üst üste işaretinden önceki kısım REPOSITORY, sonraki kısım ise TAG olarak görüntülenmektedir.

Bu image’dan bir konteyner yaratmak için aşağıdaki komut kullanılır.
docker run -p8080:8080 docker-spring-boot:v1.1

-p8080:8080 şeklinde verilen parametrenin amacı, iki nokta üst üste ifadesinden sonra yazılan 8080 konteynerın iç portudur. Yani bu uygulamayı Docker olmadan ayağa kaldırdığınızda bu port geçerlidir. İki nokta üst üste ifadesinden önce yazılan port ise konteynerın dış portudur. Yani uygulamaya Docker konteynerı üzerinden ulaşmaya çalıştığımızda kullanacağımız porttur.

docker run -p8080:8080 docker-spring-boot:v1.1

Komut çalıştırıldığında Spring Boot uygulaması sorunsuz olarak ayağa kaldırılmıştır.

Tarayıcı üzerinde http://localhost:8080/hello adresine istek attğınızda Hello Docker and Spring Boot ifadesi geliyorsa çalışıyor demektedir.

Bir image’dan birden fazla konteyner ayağa kaldırılabilir.
docker run -p8081:8080 docker-spring-boot:v1.1

docker container ls

IMAGE: konteynerın hangi image’ı kullanılarak oluşturulduğu bilgisidir.
COMMAND: konteynerın hangi komut ile ayağa kaldırıldığıdır.
PORTS: konteynerın iç port ve dış port bilgileridir.
NAMES: konteynerın ismidir. İsim parametresi girmediğimiz için Docker rastgele isimler vermiştir.

http://localhost:8080/hello ve http://localhost:8081/hello
Her iki adres ile de Hello Docker and Spring Boot ifadesini görebilirsiniz.

Yorum Gönder

0Yorumlar
Yorum Gönder (0)