我有一个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。有什么帮助吗?
答案 0 :(得分:2)
是的。 JIB不需要Dockerfile
或dockerd
。
分享下面的示例,您可以将其复制到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>