我有一个简单的SpringBoot应用程序,我想使用Jib Maven plugin构建docker镜像。 以下是我的插件配置:
<plugin>
<groupId>com.google.cloud.tools</groupId>
<artifactId>jib-maven-plugin</artifactId>
<version>2.1.0</version>
<configuration>
<from>
<image>openjdk:11-jdk-slim</image>
</from>
<to>
<image>username/appname</image>
<tags>
<tag>latest</tag>
<tag>${project.version}</tag>
</tags>
</to>
<container>
<mainClass>demo.Application</mainClass>
<ports>
<port>8080</port>
<port>8787</port>
</ports>
</container>
</configuration>
</plugin>
我只想在本地生成映像并运行它。我不想一劳永逸地构建并推送到Docker注册表。
当我运行命令 mvn jib:build 时,它会使用来自Docker config (/ Users / username / .docker / config.json)的凭据自动推送到DockerHub strong>。
有没有一种方法可以禁用推入和另一个仅将图像推入注册表的目标?
答案 0 :(得分:2)
答案 1 :(得分:0)
最近的解决方法是jib:buildTar
;目标将在target/jib-image.tar
(可通过<outputPaths><tar>
配置的路径)上创建本地tarball。首次运行jib:buildTar
(或任何jib:...
个目标)将构建并缓存构建映像所需的所有内容。因此,就构建层而言,后续的jib:build
运行将是不可操作的。它只需要发送远程注册表中缺少的图层。
当然,解决方法的一个缺点是,它会创建不必要的压缩包,该压缩包可能很大。
与您的问题无关,您不需要设置<tag>latest</tag>
,因为目标图像参考username/appname
已经暗示username/appname:latest
。 <tags>
配置用于将附加标签推入<to><iamge>
顶部。
答案 2 :(得分:0)
我刚刚检查了一下,就有可能由Jib在本地制作图像。首先,确保您的Docker守护程序在本地运行。然后像这样:
<to>
<image><your-local-image-name></image>
</to>
我想您的服务器可能没有用,因为您的Docker守护进程未运行或您的映像名称以您的用户名开头,这使Jib认为您实际上是要将映像推送至Docker Hub。