Spring Boot ile Docker Kullanımı

Selamlar, bu yazımda bir Spring uygulamasını hızlı bir şekilde Docker ile deploy etmeyi öğreneceğiz.

Rehber öncesinde bilgisayarınızda Docker’ın kurulu olması gerektiği için, eğer henüz kurulumu yapmadıysanız sizi şuraya alalım.

Başlayalım

Spring uygulamamızı oluşturarak başlayalım. Bunun için favori yönteminiz ile bir Spring uygulamasını lokalinizde başlatabilir veya benim gibi Intellij IDEA ile Spring Initialzr kullanabilirsiniz. Projemiz çok ufak olacağı için yalnızca Spring Web seçmemiz yeterli olacaktır. Intellij üzerinden New Project -> Spring Initialzr seçerek ilerleyim o halde. Web seçelim ve projemizi oluşturalım.

 

Basit bir Controller yazalım

@SpringBootApplication
@RestController
public class DockerApplication {

    @RequestMapping
    public String main() {
        return "Merhaba Docker!";
    }

    public static void main(String[] args) {
        SpringApplication.run(DockerApplication.class, args);
    }

}

Controller notasyonumuzu direkt olarak Main sınıfımıza verdik çünkü basit tutmak istedim. Şimdi asıl amacımız olan Docker ile bu Spring uygulamamızı hayata geçirme işlemine başlayabiliriz!

Docker ile Deploy

Docker’da bir container kaldırmak amacıyla Dockerfile isminde ki dosyalar kullanılır. Bu dosyalar içerisinde gerekli konfigürasyonlar barındırılır ve bunlar kapsamında container’lar çalıştırılır. Şimdi kendi container’ımız için tanımlarımızı yapalım. Proje dizininde veya resources dosyası altında Dockerfile ismine bir dosya oluşturalım.

FROM openjdk:8-jdk-alpine
ARG JAR_FILE=target/*.jar
COPY ${JAR_FILE} spring.jar
ENTRYPOINT ["java","-jar","/spring.jar"]

Bunun ne yaptığını açıklayacak olursak; ilk satırda container’ımızın hangi imaj altında çalışacağını belirliyoruz. Eğer java8 kullanmadıysanız openjdk:11 gibi de belirtebilirsiniz. İkinci satırda ise maven install sonucu oluşan .jar dosyamızın yolunu argüman olarak tanımlıyor ve üçüncü satırda bu dosyayı container içerisine spring.jar ismi ile kopyalıyoruz. Son satırda ise java uygulamamızı komut satırı üzerinden çalıştırıyoruz.

mvnw package

Artık jar dosyamızı da oluşturduktan sonra Docker işlemlerimize geçebiliriz.

Docker

Öncelikle Dockerfile dosyanızı oluşturduğunuz yere terminal ile gelin ve devamında bu komutları sırasıyla çalıştırın.

docker build -t mySpringContainer .
docker run -p 8080:8080 mySpringContainer

Komutlarımız sırasıyla; ilk satırda mevcut Dockerfile’ımız ile verdiğimiz ayara göre bir imaj dosyası oluşturur. İkinci satırda ise container içerisinde ki 8080 portunu dışarıya açar ve bunu da kendi bilgisayarımızın 8080 portundan dinlemesini sağlar.

İlk başta eğer daha önceden kullanacağımız imajı indirmemişseniz farklı bir Dockerfile ile şimdi sizin için Docker tarafından ufak bir indirme yapılacak ve devamında komut satırından bir takım çıktılar alacaksınız.Eğer buraya kadar herhangi bir hata yapmadıysanız tarayıcınızı açıp localhost:8080 adresinden test edebilirsiniz.

 

Docker container’ımızın durumuna da şu komut ile bakabiliriz:

$ docker ps

CONTAINER ID        IMAGE               COMMAND           CREATED             STATUS              PORTS                    NAMES
81c723d22865        mySpringContainer   "java -jar ..."   59 seconds ago      Up 57 seconds       0.0.0.0:8080->8080/tcp   red_cheese

Herkese iyi çalışmalar!

More Reading

Post navigation