Spring Boot 과 Docker (with jib)

이 글은 Spring Boot 기반의 Application 을 Docker 이미지로 배포하는 과정을 jib 를 사용하여 간소화하는 방법에 대해서 다루고 있습니다.

Spring Boot 에서의 배포

Spring Boot 로 오면서 Application 의 배포는 이전보다 더 쉬워졌습니다.

Dockerizing Spring Boot Application

Spring Boot Application 을 실행하기 위한 도커 이미지 생성은 Spring 공식 가이드문서 https://spring.io/guides/gs/spring-boot-docker 에서 확인할 수 있습니다.

의존성을 분리하기

Docker 를 공부하셨던 분이라면 위와 같이 하나의 jar 파일을 복사하여 Image를 생성하는 방식은 Docker 의 Layer Caching 방식의 잇점을 잘 살리지 못하고 있다고 생각하실 수 있습니다.

jar 파일을 사용하면 Layer Caching 을 사용하기 어렵다
잘 변경되지 않는 library 와 meta-inf 를 별도 layer 로 분리하여 Layer Caching 을 사용하고 있다

Jib 를 사용하자

조금 더 나아지긴 하였지만 위와 같은 방법은 여전히 불편한 부분이 몇가지가 있습니다.

Spring Boot Application 에 대한 환경변수

실제 운영환경에서 Spring Boot Application 을 운영하려면 VM 옵션이나 Spring Profile 등을 변경해야 할 필요성이 있습니다.

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store