我有一个Spring boot应用程序,并使用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:构建
我明白了。
[INFO]构建依赖层...[INFO]构建类层...[INFO]构建资源层...
当我运行docker映像时,它说Jar文件不存在。我有一个多模块maven项目,希望在从父pom运行mvn compile jib:build时对多个模块进行dockerize。有什么帮助吗?
通过使用jib maven插件,您无需编写docker文件,jib直接为您构建映像,而无需公开dockerfile。
我觉得在你的pom里。xml将包装从“war”切换到“jar”
足以让你成功地跑步
mvn compile jib:build
(如果docker.hub.com/test/service是私有存储库,将失败,在这种情况下,您需要切换到公共或提供您的凭据)
尝试将Dockerfile中的行副本更改为
COPY target/service.war /opt/service/service.war
顺便说一句,您可以在Dockerfile中使用WORKDIR指令来使用相对路径
是的。JIB不需要Dockerfile
或dockerd
。
分享下面的一个例子,你可以把它复制到你的pom的
plugins
部分。xml
<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 MicroService
我有一个Maven Java应用程序,我正在尝试进行对接。到目前为止,我有以下dockerfile,是我从这个答案中复制的。 如果我的应用程序是一个单模块项目,这将是很好的,但是因为它是多模块的,所以我假设我不能仅仅使用。 但是,这会在阶段出错: 注意,来自我的本地m2文件夹。
我有一个Spring boot应用程序,它有许多模块,如错误模块、持久性、控制器等,如下所示 使用Maven jib插件构建docker镜像,pom中的配置如下。xml 构建成功了。但是当我运行图像时,它的抛出错误是:找不到或加载主类com。a、 卑诗省申请 如何使用Jib构建图像?。我错过了什么?
我有1个应用程序和2个模块 框架结构 但我不能在MyApp中使用MyModule的文件。IDE显示我“无法访问”错误,我想扩展一个MyModule类的类。而且它不是从MyModule创建类的,有人对此有想法吗?怎么了?
嗨,我正在使用maven多模块项目和google cloudendpoint作为api管理,我能够成功地使用appengine devserver运行应用程序,但当我将它部署到appengine时,它显示如下错误。
我花了相当长的时间,但我无法通过这个(配置)问题。 技术栈:Java(1.8)、Springboot(starter-parent、starter-web)、Maven、IntelliJ IDEA 描述:尝试创建一个多模块Java应用程序,由2个模块组成(最初): null 问题:Springboot在发送http请求时没有从webgateway模块=>404错误加载/扫描RestControll
我有一个多模块的项目,有两个模块:war和ear模块。我正在尝试使用Maven发行版插件来管理发行版。 我的配置到目前为止... 父POM: war模块POM: ear模块POM: 正如您看到的表单日志,test-war-0.0.1-sources.jar正在上传两次。这是为什么?我怎样才能编辑我的配置,使它只上传一次?