How to build Docker Image of Java Application using Gradle

Intro

Java 어플리케이션을 도커 이미지화 할 필요성이 생겨 찾아보던 중, gradle-docker-plugin 라이브러리를 사용해 Docker 이미지를 빌드 할 수 있는 방법을 찾았다. 이를 테스트 해 본 내용을 단계별로 기록해 보려 한다. (kotlin을 사용한다.)


How to

Docker 설치

테스트할 머신에 docker를 설치한다.

sudo yum install docker

Add Plugin

Plugin 추가 — Kotlin

타겟이 되는 Application의 build.gradle.kts 파일에 “application”, “docker-java-application” 플러그인을 추가한다.

gradle version 6.4.1 기준

// build.gradle.kts 파일 예시
plugins {
   ...
   java
   id("com.bmuschko.docker-java-application") version "6.4.0"
}

Plugin 추가 — Groovy

groovy를 사용하는 경우 kotlin과 같이 타겟이 되는 Application의 build.gradle 파일에 “application”, “docker-java-application” 플러그인을 추가한다.

gradle version 6.3 기준

// build.gradle.kts 파일 예시
plugins {
   ...
   id 'java'
   id 'com.bmuschko.docker-java-application' version '6.4.0'
}

Add DockerExtension Config

DockerExtension Config — Kotlin

docker extension의 config를 build.gradle.kts 파일에 추가한다. java 버전에 맞는 이미지를 선택하고, maintainer 정보와 오픈할 port를 추가한다.

docker {
   javaApplication {
      baseImage.set("openjdk:8-alpine")
      maintainer.set("Name Lee 'xxx@gmail.com'")
      ports.set(listOf(8761))
   }
}

DockerExtension Config — Groovy

groovy의 경우 문법에 맞게 docker extension의 config를 build.gradle 파일에 추가한다. java 버전에 맞는 이미지를 선택하고, maintainer 정보와 오픈할 port를 추가한다.

docker {
    javaApplication {
        baseImage = 'openjdk:8-alpine'
        maintainer = 'Name Lee "xxx@gmail.com"'
        ports = [8761]
    }
}

Build Docker Image

gralde (wrapper)를 이용해 docker image를 빌드한다. 아래의 명령을 사용한다.

./gradlew clean jar dockerBuildImage

Check Created Docker Image

docker images 명령을 통해 생성 된 docker image를 확인 할 수 있다.

docker images

예시 Git Project build.gradle 파일

  • https://github.com/taesunny/ddangn-market-service-registry/blob/90616c3403e429e81a1b83314b6f56be5341a78b/build.gradle.kts#L9

Source

  • https://docs.oracle.com/en/solutions/monitor-applications-on-kubernetes/create-docker-image-java-application.html
  • https://plugins.gradle.org/plugin/com.bmuschko.docker-java-application
  • https://bmuschko.github.io/gradle-docker-plugin/

Leave a comment