Jib

Hyunjun Jang·2022년 1월 9일
0

Jib란?

Jib은 Docker 사용 없이 Java 어플리케이션 컨테이너를 빌드할 수 있게 해주는 Google의 오픈 소스 Java 컨테이너라이저이다. Jib는 애플리케이션을 컨테이너 이미지로 패키징하는 모든 단계를 빠르게 처리하는 컨테이너 이미지 빌더이다. Dockerfile을 작성하거나 도커를 설치할 필요가 없으며 Maven 및 Gradle의 플러그인으로 동작하며, 플러그인을 설치한 다음 타깃 이미지에 대한 설정과 빌드에 대한 정의만 하면 Java 애플리케이션을 즉시 컨테이너화 할 수 있다.

  • Docker build flow

  • Jib build flow

설정 및 실행방법

jib을 사용하기 위해서는 build.gradle 관련 라이브러리를 추가하고 컨테이너 이미지 설정을 해야한다. 아래와 같이 라이브러리를 추가 및 설정 하는 방법으로 알아보도록 한다.

build.gradle 파일에 jib 라이브러리 추가

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

build.gradle 파일에 jib 설정 추가

  • jib 설정 항목
    • from 구문
      from 구문에서 설정할 수 있는 가장 중요한 항목은 image이다.

      jib 라이브러리가 애플리케이션을 컨테이너 이미지로 만들 때 사용하는 베이스 이미지를 지정하는 항목이다
      아무것도 설정하지 않으면 adoptopenjdk:11-jre이 기본값이 된다.

    • to 구문
      to 구문에서 설정할 수 있는 가장 중요한 항목은 imagetags 이다.
      여기에서의 image는 from 과는 반대로 생성된 컨테이너 이미지가 저장될 레포지터리를 의미한다. 그리고 tags는 이 이미지에 설정될 태그를 의미한다.
    • container 구문
      container 구문은 컨테이너 이미지가 컨테니어화 되어서 실행될 때 필요한 자바 애플리케이션의 jvmFlags, environment 설정들을 지정할 수 있다.

위 내용들을 토대로 아래와 같이 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

Reference

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

profile
Let's grow together😊

0개의 댓글