Jib은 '배포를 위한 포장 도구'이고, Adoptium은 'Java 실행을 위한 엔진(JDK)
Jib는 구글에서 만든 Java 애플리케이션용 컨테이너 빌드 도구
기존 방식: Dockerfile을 작성, Docker 데몬을 실행해서 Docker로 만듦
Jib:
Dependencies (거의 안 변함)
Resources (가끔 변함)
Classes (매우 자주 변함)
로 나누어 빌드하므로, 코드 한 줄만 고쳤을 때 전체를 다시 빌드하지 않고 변경된 부분만 빠르게 업데이트
Adoptium은 고품질의 무료 오픈소스 Java 배포판(JDK)을 제공하는 프로젝트입니다.
과거에 유명했던 AdoptOpenJDK가 Eclipse 재단으로 옮겨오면서 이름이 바뀜. 오라클 JDK의 유료화 정책 이후, 가장 신뢰받는 무료 JDK 대안 중 하나로 자리 잡음.
특징:
Eclipse Temurin: Adoptium에서 배포하는 JDK의 브랜드 이름 (예: "Adoptium에서 만든 Temurin JDK를 쓴다").
Runtime의 철자를 섞어서 만든 이름. 즉, 자바 실행 환경(Runtime) 그 자체라는 뜻
기업용 수준의 안정성: 엄격한 테스트(TCK, AQAvit)를 거쳐 배포되므로 상용 서비스에서 안심하고 사용 가능
TCK (Technology Compatibility Kit): 해당 JDK가 자바의 공식 표준 규격(JSR)에 맞게 구현되었는지 확인하는 테스트 모음
AQAvit(Adoptium Quality Assurance): Eclipse Adoptium 프로젝트에서 만든 더욱 까다롭고 광범위한 품질 검증 시스템
다양한 플랫폼 지원: Windows, Linux, macOS뿐만 아니라 다양한 CPU 아키텍처를 지원
완전 무료: 라이선스 비용 걱정 없이 누구나 자유롭게 사용 가능
| 구분 | Jib | Adoptium (Temurin) |
|---|---|---|
| 정체성 | 빌드 도구 (Build Tool) | 자바 실행 환경 (JDK/Runtime) |
| 개발사 | Eclipse Foundation (커뮤니티 주도) | |
| 주요 목적 | Java 앱을 컨테이너(Docker)로 만들기 | Java 코드를 컴파일하고 실행하기 |
| 사용 시점 | 배포 준비 단계 | 개발 환경 구축 및 서버 실행 시 |
A. Gradle 프로젝트 (build.gradle)
plugins {
id 'com.google.cloud.tools.jib' version '3.4.0' // 최신 버전 확인 권장
}
jib {
from {
// 기반이 되는 이미지 (Adoptium Temurin 추천)
image = 'eclipse-temurin:17-jre'
}
to {
// 생성될 이미지 이름 및 태그
image = 'your-dockerhub-id/project-name:latest'
}
container {
// 실행 시 JVM 옵션
jvmFlags = ['-Xms512m', '-Xmx512m', '-Dfile.encoding=UTF-8']
// 포트 설정
ports = ['8080']
}
}
B. Maven 프로젝트 (pom.xml)
<plugin>
<groupId>com.google.cloud.tools</groupId>
<artifactId>jib-maven-plugin</artifactId>
<version>3.4.0</version>
<configuration>
<from>
<image>eclipse-temurin:17-jre</image>
</from>
<to>
<image>your-dockerhub-id/project-name:latest</image>
</to>
<container>
<ports>
<port>8080</port>
</ports>
</container>
</configuration>
</plugin>
공식 웹사이트 이용 (가장 일반적)
1. Adoptium 공식 홈페이지(https://adoptium.net/)에 접속한다.
2. 메인 화면에 보이는 "Latest Release" 버튼을 클릭하여 원하는 버전(Java 8, 11, 17, 21 등)과 OS를 선택한다.
3. 다운로드한 설치 파일(.msi, .pkg, .tar.gz 등)을 실행하여 안내에 따라 설치한다.
Jib을 공부하다 보면 Distroless라는 용어를 볼 수도 있다.
Google에서 만든 이미지로, 쉘(Shell)이나 패키지 매니저조차 들어있지 않은 '자바만 실행 가능한 최소한의 이미지'
보안이 극도로 중요하다면 eclipse-temurin 대신 gcr.io/distroless/java17-debian11 같은 이미지를 Jib의 베이스 이미지로 쓰기도 한다. (다만 터미널 접속이 안 되어 디버깅은 어렵다고)