使用JIB插件对接多模块Spring Boot应用程序



我有一个Spring启动应用程序,并使用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:构建

我看到了以下内容。

[信息]正在构建依赖关系层。。。[信息]正在构建类层。。。[信息]正在构建资源层。。。

当我运行docker镜像时,它说,Jar文件不存在。我有一个多模块maven项目,我想在运行mvn-compile jib:build from the parent pom时对多个模块进行码头化。有什么帮助吗?

是的。JIB不需要Dockerfiledockerd

下面分享一个例子,您可以将其复制到pom.xmlplugins部分

<plugin>  
<groupId>com.google.cloud.tools</groupId>  
<artifactId>jib-maven-plugin</artifactId>  
<version>0.9.7</version>  
<configuration>  
<allowInsecureRegistries>true</allowInsecureRegistries>  
<from>  
<image>gcr.io/distroless/java</image>  
</from>  
<to>  
<!-- make sure you already have created a project at Google Cloud Platform, see https://cloud.google.com/container-registry/ -->  
<image>gcr.io/my-gcp-project/${project.artifactId}:${project.version}</image>  
<credHelper>gcr</credHelper>  
</to>  
<container>  
<jvmFlags>  
<jvmFlag>-Xms256m</jvmFlag>  
<jvmFlag>-Xmx512m</jvmFlag>  
<jvmFlag>-Xdebug</jvmFlag>  
<jvmFlag>-XX:+UnlockExperimentalVMOptions</jvmFlag>  
<jvmFlag>-XX:+UseCGroupMemoryLimitForHeap</jvmFlag>  
</jvmFlags>  
<mainClass>learnmake.microservices.RunApplication</mainClass>  
<ports>  
<port>8080</port>  
<!-- <port>4000-4004/udp</port> -->  
</ports>  
<format>OCI</format>  
<!-- OR <format>Docker</format> -->  
<useCurrentTimestamp>true</useCurrentTimestamp>  
</container>  
</configuration>  
</plugin>   

有关更详细的示例,请参阅learnmake微服务

尝试更改Dockerfile中的COPY行至

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

BTW您可以在Dockerfile中使用WORKDIR指令来使用相对路径

通过使用jib-maven插件,您不需要编写docker文件,jib可以直接为您构建图像,而无需公开dockerfile。

我认为在你的pom.xml中,将包装从"war"切换为"jar">

足以让你成功运行

mvn compile jib:build

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

jib:build将尝试将图像推送到一些repo。如果只需要构建,则需要使用mvnjib:dockerBuild

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

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

相关内容

  • 没有找到相关文章

最新更新