使用JIB插件对多模块Spring Boot应用程序进行Docker化

时间:2018-07-17 05:21:49

标签: maven docker jib

我有一个Spring boot Application,并使用spotify插件对我的应用程序进行Dockerize,因此,我将拥有一个如下所示的Dockerfile。

FROM jdk1.8:latest  

RUN mkdir -p /opt/servie

COPY target/service.war /opt/service

ENV JAVA_OPTS="" \
    JAVA_ARGS=""

CMD java ${JAVA_OPTS} -jar /opt/service/service.war ${JAVA_ARGS}

我遇到了JIB,它看起来真的很酷。但是,努力使它工作。

我在下面添加了pom条目。

<plugin>
        <groupId>com.google.cloud.tools</groupId>
        <artifactId>jib-maven-plugin</artifactId>
        <version>0.9.6</version>
        <configuration>
          <from>
            <image>jdk1.8:latest</image>
          </from>
          <to>
            <image>docker.hub.com/test/service</image>
          </to>
        </configuration>
      </plugin>
  

mvn编译jib:build

我看到以下内容。

[INFO]建立依赖关系层... [INFO]建立课程层... [INFO]建立资源层...

当我运行docker映像时,它说,Jar文件不存在。我有一个多模块Maven项目,并想在从父pom运行mvn compile jib:build的过程中对多个模块进行dockerize。有什么帮助吗?

4 个答案:

答案 0 :(得分:2)

是的。 JIB不需要Dockerfiledockerd

分享下面的示例,您可以将其复制到plugins的{​​{1}}部分中

pom.xml

有关更多示例,请参见learnmake-microservices

答案 1 :(得分:0)

尝试在Dockerfile中更改COPY行

COPY target/service.war /opt/service/service.war

顺便说一句 您可以在Dockerfile中使用WORKDIR指令来使用相对路径

答案 2 :(得分:0)

通过使用jib maven插件,您无需编写docker文件,jib即可直接为您构建映像,而无需暴露dockerfile。

我认为在pom.xml中,将包装从'war'切换为'jar'

足以让您成功运行

mvn compile jib:build

(如果docker.hub.com/test/service是私有存储库,将失败,在这种情况下,您需要切换到公共或提供您的凭据)

答案 3 :(得分:0)

jib:build将尝试将映像推送到某些存储库。 如果只需要构建,则需要使用 mvn jib:dockerBuild

对于多模块项目,只需在子项目中相应地配置插件,如下所示:

<executions>
    <execution>
        <phase>package</phase>
            <goals>
                <goal>dockerBuild</goal>
            </goals>
        </execution>
</executions>