我正在使用 maven Jib 插件构建容器映像,并且构建得很好。我也可以将其推送到存储库。但我在弄清楚如何在编译阶段构建映像,然后在部署阶段将其推送到存储库而无需再次构建时遇到了问题。 我是否需要重写插件配置两次,jib 就会缓存图像,这样就不会再次构建它?或者 github 上是否缺少一些文档。
我尝试构建图像并在一个阶段中推动它。 我需要在一个阶段中构建它,然后将该图像推入不同的阶段
您需要在
package
或 deploy
阶段使用一次执行来构建和推送镜像。我什至不知道这两个操作是否可以分为两次执行,因为 Jib 不能那样工作。
这是我的示例配置:
<plugin>
<groupId>com.google.cloud.tools</groupId>
<artifactId>jib-maven-plugin</artifactId>
<version>3.4.4</version>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>${jib-maven-plugin.goal}</goal>
</goals>
<configuration>
<from>
<!--
Use the tagged version of JDK to ensure consistent build.
The image must have the target architecture (configuration.from.platforms.platform.architecture) among the manifest list.
See: https://github.com/GoogleContainerTools/jib/blob/master/docs/faq.md#how-do-i-specify-a-platform-in-the-manifest-list-or-oci-index-of-a-base-image
-->
<image>openjdk:17.0.1-jdk-slim@sha256:9a37f2c649301b955c2fd31fb180070404689cacba0f77404dd20afb1d7b8d84</image>
<platforms>
<platform>
<architecture>amd64</architecture>
<os>linux</os>
</platform>
</platforms>
</from>
<to>
<image>${jib-maven-plugin.to.image}</image>
<!--
The credentials are required to connect to a remote Docker repository.
Environment variables like `PATH` and `M2_HOME` are referenced using the env.* prefix, so define only
See: https://stackoverflow.com/a/10463133/3764965
See: https://books.sonatype.com/mvnref-book/reference/resource-filtering-sect-properties.html
-->
<auth>
<username>${env.HARBOR_USERNAME}</username>
<password>${env.HARBOR_PASSWORD}</password>
</auth>
<tags>
<tag>latest</tag>
</tags>
</to>
<container>
<creationTime>USE_CURRENT_TIMESTAMP</creationTime>
<mainClass>com.myapp.Application</mainClass>
<user>nobody</user>
<workingDirectory>/app/resources</workingDirectory>
</container>
</configuration>
</execution>
</executions>
</plugin>
需要修改。请参阅 Jib Maven 插件文档了解更多详细信息:https://github.com/GoogleContainerTools/jib/tree/master/jib-maven-plugin
变量:
jib-maven-plugin.goal
:
dockerBuild
进行构建并将其推送到本地 Docker 守护进程中。build
目标进行无 docker 构建并推送到远程 Docker 存储库。jib-maven-plugin.to.image
:
myapp
。imagine.mycompany.com/mydepartment/myproject/myapp
这里有一些提示: