Jib은 Docker 사용 없이 Java 어플리케이션 컨테이너를 빌드할 수 있게 해주는 Google의 오픈 소스 Java 컨테이너라이저이다. Jib는 애플리케이션을 컨테이너 이미지로 패키징하는 모든 단계를 빠르게 처리하는 컨테이너 이미지 빌더이다. Dockerfile을 작성하거나 도커를 설치할 필요가 없으며 Maven 및 Gradle의 플러그인으로 동작하며, 플러그인을 설치한 다음 타깃 이미지에 대한 설정과 빌드에 대한 정의만 하면 Java 애플리케이션을 즉시 컨테이너화 할 수 있다.
Docker build flow
Jib build flow
jib을 사용하기 위해서는 build.gradle 관련 라이브러리를 추가하고 컨테이너 이미지 설정을 해야한다. 아래와 같이 라이브러리를 추가 및 설정 하는 방법으로 알아보도록 한다.
plugins {
id 'com.google.cloud.tools.jib' version '2.4.0'
}
jib 라이브러리가 애플리케이션을 컨테이너 이미지로 만들 때 사용하는 베이스 이미지를 지정하는 항목이다
아무것도 설정하지 않으면 adoptopenjdk:11-jre이 기본값이 된다.
위 내용들을 토대로 아래와 같이 jib 설정정보를 생성한다.
jib {
from {
image = "adoptopenjdk/openjdk16:x86_64-alpine-jdk-16.0.1_9"
}
to {
image = "test1099/hello-jib"
tags = ["latest"]
}
container {
jvmFlags = ["-Xms128m", "-Xmx128m"]
}
}
adoptopenjdk/openjdk16:x86_64-alpine-jdk-16.0.1_9 이미지를 베이스 이미지로 삼아서 컨테이너 이미지를 만든 후 도커 허브의 sepiro2000/hello-jib 레포에 latest 라는 태그를 넣어서 푸시하고 컨테이너화가 되어 동작할 때는 JVM 옵션으로 "-Xms128m", "-Xmx128m" 이 두 가지 옵션을 넣어서 실행하라는 의미가 된다.
jib 이미지 생성 명령어로 이미지 생성이 잘 되는지 확인한다.
$ ./gradlew jib
https://cloudplatform.googleblog.com/2018/07/introducing-jib-build-java-docker-images-better.html
https://cloud.google.com/java/getting-started/jib
https://alden-kang.tistory.com/1