gradle-plugin을 이용해서 spring-boot image를 쉽게 만들 수 있다
해당 task에서 어떻게 image를 생성하는지 알아보자
https://docs.spring.io/spring-boot/docs/current/gradle-plugin/reference/htmlsingle/#build-image
해당 문서에서 알아보려고 하는 내용에 대해서 가이드 하고 있다
Packaging OCI Images
The plugin can create an OCI image from a jar or war file using Cloud Native Buildpacks (CNB). Images can be built using the bootBuildImage task.
gradle plugin에서는 Cloud Native Buildpacks(CNB)을 통해서 jar or war 파일을 이용해 OCI image를 만들 수 있다
Open Container Initiative (OCI)
컨테이너 런타임과 이미지 관련 업계 개방형 표준
Cloud Native Buildpacks (CNB)
해당 task를 수행할 때 다양한 옵션을 설정할 수 있는데
그중에 image를 만드는데 영향을 미치는 옵션에 대해서 알아보자
tasks.named('bootBuildImage') {
builder = 'paketobuildpacks/builder-jammy-base:latest'
}
spring-boot initializer를 이용해서 spring-boot 프로젝트를 생성하면 해당 block이 생성된다.
-> paketobuildpacks을 이용
Builder
A builder is an image that contains all the components necessary to execute a build.
결론적으로 image를 만드는 주체
image를 만들기위한 정보를 가지고 있다 - builder.toml
build image : image를 만들기위한 환경에 대한 이미지
run image : 최종 image가 돌아갈 환경에 대한 이미지
buildpack(아래에 설명)
paketobuildpacks에서 제공하는 builder 정보 : https://paketo.io/docs/reference/builders-reference/
Buildpack
A buildpack is a set of executables that inspects your app source code and creates a plan to build and run your application. Buildpacks that the builder should use when building the image
builer가 image를 만들기위해서 필요한 구성 요소
paketobuildpacks의 spring boot buildpack에서 제공하는 buildpack 정보 : https://paketo.io/docs/reference/java-reference/#spring-boot-applications
해당 buildpack 중에서 실행되는 application에서 사용하는 buildpack만 빌드할때 쓰인다
> Running creator
[creator] ===> ANALYZING
[creator] Restoring data for SBOM from previous image
[creator] ===> DETECTING
[creator] 6 of 26 buildpacks participating
[creator] paketo-buildpacks/ca-certificates 3.6.6
[creator] paketo-buildpacks/bellsoft-liberica 10.4.2
[creator] paketo-buildpacks/syft 1.39.0
[creator] paketo-buildpacks/executable-jar 6.8.2
[creator] paketo-buildpacks/dist-zip 5.6.7
[creator] paketo-buildpacks/spring-boot 5.27.5