jib른 구글 클라우 도구 중 하나로 프로젝트를 빌드함과 동시에 컨테이너 이미지까지 만들어서 원하는 레포에 푸시를 해준다. Dockerfile을 사용하지 않거나 Docker를 설치할 필요 없이 컨테이너를 빌드할 수 있다.
기존에는 bootBuildImage라는 테스크를 통해 이미지를 빌드하고 docker hub에 푸시하여 이미지를 올렸다. 그러나 jib를 이용하면 보다 쉽게 컨테이너를 빌드할 수 있고 프로젝트를 빌드함과 동시에 컨테이너를 빌드할 수 있어 속도가 빨라진다는 점에서 이점이 있어 선택하였다.
plugins {
id 'com.google.cloud.tools.jib' version '3.3.1'
}
jib {
to {
image = 'wanf/server'
tags = ['0.4']
}
}
위는 내가 프로젝트에 설정한 코드이다. 먼저 jib 라이브러리를 추가해주고 jib 설정을 해준다. jib는 다양한 설정값을 제공하는데 나는 to구문만 설정하였다. to 구문에서는 image와 tag외에 여러가지를 설정할 수 있는데 image에는 생성된 컨테이너 이미지가 저장될 레포를 의하곳 tags는 이 이미지에 설정될 태크를 의미한다. to 구문 외에는 from과 container 구문이 있는데 from은 image를 만들때 사용하는베이스 이미지를 지정한다. from 구문이 생략되면 기본값이 세팅이되고 기본값은 'adoptopenjdk:11-jre'이다. container 구문은 컨테이너 이미지가 컨테이너화 되어서 실행 때 필요한 자바 어플리케이션의 설정들을 지정할 수 있다.
jib 설정을 통해 컨테이너 이미지를 빌드하는 설정까지 완료하였다. 그 후 이 이미지를 배포하도록 하였다.
# gradle Jib를 이용해 이미지를 만들고 원격 저장소에 Push
- name: Setup Jib with Gradle
run: ./gradlew jib
# ssh로 접속해 재배포
- name: Deploy
uses: appleboy/ssh-action@master
with:
host: ${{ secrets.REMOTE_IP }}
username: ${{ secrets.REMOTE_SSH_ID }}
key: ${{ secrets.REMOTE_SSH_KEY }}
port: ${{ secrets.REMOTE_SSH_PORT }}
script: |
cd docker
docker compose down
docker compose pull
docker compose up -d
이는 project CD 파이프라인 중 일부이다. Setup Jib 작업을 하여 이미지를 빌드하여 Docker Hub에 푸시한 후 Deploy 작업을 통해 AWS EC2에 접속하여 이미지를 가져와 실행하도록 설정하였다. 이를 통해 프로젝트 컨테이너 이미지를 쉽게 빌드하고 배포할 수 있게 되었다.
참고
https://github.com/GoogleContainerTools/jib/tree/master/jib-gradle-plugin
https://cloud.google.com/java/getting-started/jib?hl=ko