Dockerize Aplikasi Spring Boot



Halo Guys, kali ini saya akan berbagi ilmu tentang teknologi yang sedang hits saat ini, yaitu Docker. 

Docker adalah seperangkat platform sebagai produk layanan yang menggunakan virtualisasi tingkat OS untuk mengirimkan perangkat lunak dalam paket yang disebut kontainer.

Kontainer diisolasi satu sama lain dengan menggabungkan software, libraries dan file config sendiri.

Dengan adanya Docker memungkinkan developer aplikasi untuk membangun, menyebarkan, menjalankan, memperbarui, dan menghentikan kontainer menggunakan perintah sederhana.

Saya akan fokus pada bagaimana cara membuat docker image pada aplikasi spring boot microservice.

Let's Practice !

Pertama kita set up terlebih dahulu aplikasi Spring Boot dengan tool STS atau melalui https://start.spring.io/.

1. Buka tool STS dan pilih File --> New --> Project.



2. Pilih Spring Starter Project pada folder Spring Boot dan klik Next.

3. Input nama aplikasi, Compiler (Maven/Gradle), dan pilih versi Java. Jika sudah klik Next.



 4. Pilih versi Spring Boot. Pada contoh kali ini saya memakai versi release yang terbaru yaitu versi           2.5.4.




5. Klik Next akan muncul Full Url aplikasi atau bisa langsung Klik Finish.



6. Tunggu sampai proses download library pada maven selesai. Di bawah ini adalah hasil create aplikasi Spring Boot hello-master-java90.





7. Compile aplikasi dengan klik kanan pada nama project Run As --> Maven Build.




8. Pada menu Edit Configuration and Launch Ketik perintah clean install pada field Goals. Selanjutnya klik button Run dibagian bawah.



9.  Spring Boot akan melakukan download library jika pada local repo belum ada.



  10. Jika proses build jar success akan terlihat seperti di bawah ini.




Class utama pada Spring Boot ditandai dengan anotasi  @SpringBootApplication.

Anotasi @RestController menunjukan bahwa class tersebut berperan sebagai class handler untuk menerima adanya web request. @RequestMapping("/") pada method home akan mengembalikan response "Hello World, masterjava90.com";

Ubah port aplikasi menjadi port 8181 pada file config application.properties.




Selanjutnya mari kita buat file dengan nama Dockerfile pada project Spring Boot.



Pada Dockerfile input command berikut untuk build image docker.


Untuk running docker sebagai non-root user maka perlu ditambahkan command berikut.

RUN addgroup -S masterjava90 && adduser -S masterjava90 -G masterjava90
USER masterjava90:masterjava90

Selanjutnya running Docker Desktop pada komputer/laptop. Jika belum ada bisa download dari situs https://www.docker.com/products/docker-desktop







   Buka cmd dan lokasikan ke path nama aplikasi Spring Boot.

 



  Jika menggunakan Maven, maka command build docker adalah sebagai berikut:

 docker build -t masterjava90/hello-world .

 Selanjutnya check docker image yang terbentuk dengan command docker ps.



   Dari gambar di atas sudah terbentuk image docker dengan nama masterjava90/hello-world.

  Langkah selanjutnya yaitu run docker images dengan command berikut.

  docker run -p 8181:8181 -d masterjava90/hello-world:latest

 

   Ketik command docker ps dan Enter.

  

  
 Dari informasi di atas service docker telah Up dengan menggunakan port 8181.

 Untuk melihat log console dari aplikasi kita bisa gunakan command docker logs [nama_docker].           
   

  
Saat docker running sebagai non-root user maka pada start up logs akan terlihat nama username pada  entry log INFO pertama. 




   Tahap terakhir adalah install dan buka aplikasi Postman untuk menguji API yang telah dibuat.

   

  
  



  Horeee....Dockerize aplikasi Spring Boot dengan method REST API telah sukses dibuat.

Untuk melihat source repository lengkap dari aplikasi  Spring Boot di atas bisa download pada link GitHub https://github.com/narso2016/hello-master-java90.