jib로 컨테이너 이미지 빌드하고 배포하기

전홍영·2023년 6월 20일

Architecture

목록 보기
4/6

jib란

jib른 구글 클라우 도구 중 하나로 프로젝트를 빌드함과 동시에 컨테이너 이미지까지 만들어서 원하는 레포에 푸시를 해준다. Dockerfile을 사용하지 않거나 Docker를 설치할 필요 없이 컨테이너를 빌드할 수 있다.

jib 선택 이유

기존에는 bootBuildImage라는 테스크를 통해 이미지를 빌드하고 docker hub에 푸시하여 이미지를 올렸다. 그러나 jib를 이용하면 보다 쉽게 컨테이너를 빌드할 수 있고 프로젝트를 빌드함과 동시에 컨테이너를 빌드할 수 있어 속도가 빨라진다는 점에서 이점이 있어 선택하였다.

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

profile
Don't watch the clock; do what it does. Keep going.

0개의 댓글