<aside> 👨‍💻 JIB를 사용하면 이미지를 경량화시킬수 있다.

</aside>

JIB가 뭘까?

Jib는 Docker 이미지를 생성하는 데 사용되는 도구 중 하나입니다. 그러나 Jib는 일반적인 Docker 이미지 빌드 프로세스와 몇 가지 중요한 차이점이 있습니다.

  1. Docker Daemon 없이 빌드: Jib를 사용하면 Docker Daemon이나 Docker 설치가 필요하지 않습니다. 대신에 Maven이나 Gradle을 통해 빌드를 실행할 수 있습니다. 이는 개발자가 로컬 머신에 Docker를 설치하거나 Docker Daemon을 실행할 필요가 없음을 의미합니다.
  2. Gradle 또는 Maven 플러그인 사용: Jib는 Gradle 플러그인 또는 Maven 플러그인으로 사용됩니다. 이러한 플러그인을 사용하여 프로젝트의 설정 파일에 이미지 빌드 및 배포를 구성할 수 있습니다.
  3. 레이어 최적화: Jib는 이미지 빌드를 위해 레이어를 최적화하여 전체 이미지를 다시 빌드하지 않고도 변경 사항을 적용할 수 있습니다. 이는 이미지를 더 빠르게 빌드하고 배포할 수 있도록 합니다.
  4. 빌드 환경 분리: Jib는 이미지를 빌드하는 데 필요한 의존성을 별도의 레이어로 분리하여 최종 이미지를 더 가벼운 상태로 유지합니다. 이는 이미지의 크기를 줄이고 보안을 강화하는 데 도움이 됩니다.
  5. 자동 설정: JIB는 Java 애플리케이션의 실행 방법을 자동으로 설정하여, 개발자가 별도의 ENTRYPOINT를 지정할 필요가 없다.

먼저 DockerHub에 회원가입 후 Repository를 생성한다.

Untitled

build.gradle.kts - jib 플러그인 작성

plugins {
    id("org.springframework.boot") version "3.2.5"
    id("io.spring.dependency-management") version "1.1.4"
    kotlin("jvm") version "1.9.23"
    kotlin("plugin.spring") version "1.9.23"
    kotlin("plugin.jpa") version "1.9.23"
    
    // 최신버전 JIB 추가
    id("com.google.cloud.tools.jib") version "3.4.2"
}

build.gradle.kts - jib 설정코드 작성

JIB 설정 파일