이 글에서는 Maven을 통해 SpringBoot 애플리케이션을 Docker 이미지로 빌드하는 3가지 기술을 소개한다.
(1)spring-boot-maven-plugin에 내장된 build-image.
(2)Google의 jib-maven-plugin。
(3)사용 dockerfle-maven-plugin。
Spring Boot 애플리케이션
편리하게 실습하려면 Spring Boot 프로젝트가 필요하다.
Demo 프로젝트 주소:
https://github.com/davelms/me...
프로젝트 환경:
Java 11
Maven 3.6.3
사용 mvn package jar 패키지를 정상적으로 빌드할 수 있다.
정상적으로 실행할 수도 있습니다:
java -jar target/demo-application-0.0.1-SNAPSHOT.jar
테스트 페이지:
http://localhost:8080/hello

Demo 프로젝트가 준비되었으니, 이제 이미지를 빌드하는 3가지 방법을 실습해 보자.
일、Spring Boot maven 플러그인의 build-image
Spring Boot에는 Docker 이미지를 빌드하는 자체 플러그인이 기본으로 포함되어 있다. pom.xml의 spring-boot-starter-parent에 이미 들어 있으므로 별도로 변경할 필요가 없다.
Dockerfile을 작성할 필요도, 다른 일을 신경 쓸 필요도 없다. Spring이 권장하는 보안, 메모리, 성능 관련 사항 등을 플러그인이 모두 처리해 준다.
다음을 간단히 실행하기만 하면 된다:
mvn spring-boot:build-image
실행이 완료되면 성공 안내 메시지가 표시됩니다:

컨테이너 실행 테스트:
docker run -p 9090:8080 -t demo-application:0.0.1-SNAPSHOT
주의: 여기서 매핑되는 로컬 포트는 9090。

둘째、jib-maven-plugin
Jib는 Docker 이미지를 만드는 Maven 및 Gradle 플러그인이다.
이 플러그인에는 아주 뚜렷한 특징이 하나 있습니다:로컬에 Docker를 설치할 필요 없음,이는 지속적 통합에 매우 편리하며, Jib는 지정한 Docker 레지스트리에 직접 푸시할 수 있다.
Jib 역시 Dockerfile을 작성할 필요가 없다.
사용하기도 매우 편리하며, 코드를 수정할 필요가 없고 pom.xml도 변경하지 않아도 된다.
다음만 실행하면 됩니다:
mvn compile com.google.cloud.tools:jib-maven-plugin:2.3.0:dockerBuild
mvn compile
우리에게 매우 익숙한 maven 컴파일 명령어이다.
com.google.cloud.tools:jib-maven-plugin:2.3.0
Jib 플러그인 사용을 지정했다
dockerBuild
는 Jib 플러그인의 실행 목표이며,dockerBuild Jib가 로컬에 설치된 Docker를 사용하도록 지정했다。
실행이 완료되면 성공 안내 메시지가 표시됩니다:

컨테이너를 시작하여 테스트:
docker run -p 9091:8080 -t demo-application:0.0.1-SNAPSHOT
주의: 여기서 매핑되는 로컬 포트는 9091。

삼、dockerfile-maven-plugin
이 플러그인을 사용하려면 Dockerfile을 작성해야 하는데, Domo 프로젝트에는 이미 준비되어 있습니다.
Dockerfile은 프로젝트의 루트 디렉터리에 pom.xml과 함께 두어야 합니다.

그런 다음 pom.xml에 설정을 추가하여 저장소, tag 태그, 그리고 위 Dockerfile에서 정의한 JAR_FILE。

실행 mvn package 때 이미지가 자동으로 빌드되며, 실행이 끝나면 다음 안내 메시지가 표시된다:

컨테이너 실행:
docker run -p 9092:8080 -t demo-application:0.0.1-SNAPSHOT
주의: 매핑된 로컬 포트는 9092。

소결

이 3가지 중 가장 편리한 것은 SpringBoot 기본 방식으로,직접 할 일이 전혀 없고 바로 사용할 수 있다。
가장 특징적인 것은 Jib이다. 로컬에 Docker를 설치할 필요 없이 지정된 저장소로 직접 푸시할 수 있으며, 사용법도 매우 간단하다.
가장 번거로워 보이는 것은 dockerfile-maven-plugin 플러그인이다. Dockerfile도 작성해야 하고 설정도 추가해야 한다,하지만,실제로 이것이 가장 사용하기 편하다. 앞의 2개는 네트워크 환경과 관련이 있어(무슨 말인지 알 것이다), Docker 미러를 설정해도 오류가 발생하니 직접 시험해 볼 수 있다.
