본문 바로가기
TIL

Jib : 자바 개발자를 위한 Dockerfile 없는 컨테이너 빌드

by 댕댕뮈 2025. 5. 28.

컨테이너 시대에 자바 개발자도 이제 Dockerfile을 작성하고, 레지스트리에 이미지를 푸시하며, CI/CD 파이프라인을 꾸려야 하는 세상입니다. 그런데, 우리가 굳이 Dockerfile을 써야 할까요?

Google이 만든 오픈소스 도구 Jib은 Maven이나 Gradle 빌드 과정에서 자동으로 최적화된 컨테이너 이미지를 생성해줍니다. 그리고 무엇보다, Dockerfile과 Docker 데몬이 필요 없습니다.


💡 Jib이란?

Jib은 Google에서 개발한 오픈소스 컨테이너 빌드 도구로,
Java 애플리케이션을 Dockerfile 없이도 컨테이너 이미지로 만들어주는 강력한 도구입니다.

특히 Gradle이나 Maven을 사용하는 Java 프로젝트에 최적화되어 있어,
Java 개발자가 별도의 도커 지식 없이도 컨테이너화를 할 수 있게 해줍니다.

Jib은 다음과 같은 특징을 갖습니다:

  • Dockerfile 불필요: Docker를 몰라도 OK
  • Docker 데몬 불필요: 로컬에서 Docker가 없어도 동작
  • 이미지 최적화 자동화: 클래스, 리소스, 종속성 계층 자동 분리
  • 빌드 속도 향상: 변경된 레이어만 캐시 없이 재빌드
  • 레지스트리에 직접 푸시: 로컬 저장 없이 바로 업로드

🔍 Jib vs Docker

Jib와 Dockerfile을 사용하는 방식에는 어떤 차이가 있는지 확인해보면 아래와 같습니다.

 

  • Docker 빌드 플로우

 

 

  • Jib 빌드 플로우

 

항목  Jib  Dockerfile
설정 난이도 매우 쉬움 (Gradle/Maven 설정) 직접 작성 필요
Docker 설치 필요 여부 ❌ 필요 없음 ✅ 필수
빌드 속도 빠름 (레이어 캐싱) 느릴 수 있음
보안성 높은 편 (슬림 이미지 사용) 이미지 선택에 따라 상이
유연성 제한적 (OS 패키지 설치 어려움) 매우 유연
JVM 친화성 최적화됨 수동 최적화 필요

 

 


⚙️ Jib 기본 사용법 (Gradle 기준)

plugins {
  id 'com.google.cloud.tools.jib' version '3.4.0'
}

jib {
  to {
    image = 'gcr.io/my-project/my-app'
  }
}

 

위와 같이 build.gradle에 설정하고,

아래와 같은 명령어 실행을 통해 이미지를 빌드하고, 지정한 레지스트리에 업로드 할 수 있습니다.

./gradlew jib

 


🚨 유의사항

  • 리눅스 패키지 설치, 사용자 추가 등 OS 레벨 설정이 필요한 경우에는 Dockerfile을 사용하는 것이 더 적합합니다.
  • Jib은 JVM 애플리케이션 전용입니다. Go, Node.js, Python 등의 프로젝트에는 사용할 수 없습니다.

 


✍ 마치며

Java 개발자에게 있어 Docker 빌드는 꽤나 진입 장벽이 될 수 있습니다.
하지만 Jib을 사용하면 Dockerfile 없이도, Docker 설치 없이도 손쉽게 이미지를 만들고 배포할 수 있습니다.

🎯 컨테이너 빌드를 더 쉽고, 빠르고, 안전하게 만들고 싶다면 오늘 바로 Jib을 도입해보세요.

 

 

 

📚 참고 자료

https://cloud.google.com/java/getting-started/jib

https://github.com/GoogleContainerTools/jib

https://cloudplatform.googleblog.com/2018/07/introducing-jib-build-java-docker-images-better.html

 

 

'TIL' 카테고리의 다른 글

객체지향 설계 원칙 : SOLID  (0) 2025.06.30
git rebase : 커밋 로그를 더 깔끔하게  (0) 2025.06.10
LTS vs non-LTS : Java 버전 선택  (0) 2025.05.11