스프링 부트 프로젝트를 도커 이미지로 만들 때 jib build를 사용합니다.
mvn -B -U clean deploy jib:build
다중 모듈 프로젝트의 경우 모든 모듈의 하위 집합만 jib 빌드의 대상이 됩니다.
이 경우 -pl 옵션으로 대상 모듈을 개별적으로 지정하여 jib 빌드를 수행합니다.
이 경우 명령은 다음과 같이 나뉩니다.
mvn -B -U clean deploy
mvn -B -pl 모듈1,모듈2 jib:build
이 설정으로도 잘 되는데 모듈을 추가하거나 제거하면 위의 ci 설정을 매번 바꿔줘야 합니다.
더 좋은 점은 패키징 시 실행되도록 jib 빌드를 구성할 수 있다는 것입니다.
jib-maven-plugin을 구성할 때 다음 설정을 추가합니다.
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>build</goal>
</goals>
</execution>
</executions>
다음과 같이 공통 상위 모듈에 이 설정을 추가합니다(이 설정 생략).
<build>
<pluginManagement>
<plugins>
<plugin>
<groupId>com.google.cloud.tools</groupId>
<artifactId>jib-maven-plugin</artifactId>
<version>${jib-maven-plugin.version}</version>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>build</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</pluginManagement>
</build>
jib을 빌드할 모듈의 빌드 플러그인 설정에 jib-maven-plugin이 있는 경우
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
<plugin>
<groupId>com.google.cloud.tools</groupId>
<artifactId>jib-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
ci는 다음과 같이 설정하기만 하면 됩니다.
mvn -B -U clean deploy
이 설정에서는 프로젝트 모듈이 jib 빌드 대상의 설정을 관리하기 때문에 jib 빌드 모듈에서 변경이 발생하더라도 jenkins ci에서 설정을 변경하는 비용은 발생하지 않습니다.
또한 빌드 단계의 수는 모듈당 빌드를 나누어 사용하는 것과 비교하여 jib:build에 대한 모듈의 수를 줄입니다.