【问题标题】:How to build the docker image using jib-maven-plugin, but not push by default?如何使用 jib-maven-plugin 构建 docker 镜像,但默认不推送?
【发布时间】:2020-07-06 19:45:44
【问题描述】:

我有一个简单的 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 配置的凭据自动推送到 DockerHub (/Users/username/.docker/config.json)强>.

有没有办法可以禁用推送和另一个目标只是将图像推送到注册表?

【问题讨论】:

  • 你试过mvn jib:dockerBuild吗?
  • 使用 jib:dockerBuild 只是构建镜像而不推送,但它需要 docker 守护进程运行对吗?选择 jib 的主要原因是我们不需要在 CI 服务器上运行 Docker 守护进程。

标签: spring-boot maven jib


【解决方案1】:

从 JIB 文档Jib Maven Plugin,您可以运行

mvn jib:dockerBuild

这将在构建后将图像推送到 Docker 守护进程。

【讨论】:

    【解决方案2】:
    推荐的答案 Google Cloud

    既然你说jib:dockerBuild不是一个选项,最接近的解决方法是jib:buildTar;目标在target/jib-image.tar(可使用&lt;outputPaths&gt;&lt;tar&gt; 配置路径)创建一个本地tarball。第一次运行jib:buildTar(或任何jib:... 目标)将构建和缓存构建映像所需的所有内容。因此,后续的jib:build 运行在构建层方面将是无操作的。它只需要发送远程注册表中缺少的层。

    当然,解决方法的一个缺点是它会创建一个不必要的压缩包,它可能很大。


    与你的问题无关,你不需要设置&lt;tag&gt;latest&lt;/tag&gt;,因为目标图像引用&lt;image&gt;username/appname&lt;image&gt;已经暗示了&lt;image&gt;username/appname:latest&lt;image&gt;&lt;tags&gt; 配置用于将 additional 标签推送到 &lt;to&gt;&lt;iamge&gt; 之上。

    【讨论】:

      【解决方案3】:

      我刚查了一下,可以在本地使用 Jib 构建的图像。首先确保您的 Docker 守护程序在本地运行。然后这样做:

          <to>
              <image><your-local-image-name></image>
          </to>
      

      我猜你的可能没有工作,因为你的 Docker 守护程序没有运行,或者你的镜像名称以你的用户名开头,这让 Jib 认为你实际上想要将镜像推送到 Docker Hub。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2018-08-18
        • 2020-08-07
        • 2021-11-13
        • 1970-01-01
        • 2021-02-27
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多