当前位置: 首页 > 知识库问答 >
问题:

如何使用jib-maven-plugin构建docker映像,但默认情况下不推送?

公孙盛
2023-03-14

我有一个简单的SpringBoot应用程序,我想使用Jib Maven插件构建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注册表。

当我运行命令mvnjib:build时,它会使用Docker config(/Users/username/.Docker/config.json)中的凭据自动推送到DockerHub。

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

共有3个答案

花飞扬
2023-03-14

我刚刚检查了一下,可以让Jib在本地构建图像。首先确保Docker守护进程正在本地运行。然后像这样做:

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

我猜你的可能不起作用,因为你的Docker守护进程没有运行,或者你的映像名称以你的用户名开头,这让Jib认为你真的想把映像推送到Docker中心。

金嘉言
2023-03-14

从JIB文档JIB Maven插件,您可以运行

mvn jib:dockerBuild

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

寿翰飞
2023-03-14

既然您说过jib:dockerBuild不是一个选项,那么最接近的解决方法就是jib:buildTar;目标在target/jib图像处创建一个局部tarball。tar(路径可通过

当然,该解决方案的一个缺点是,它会创建一个不必要的tarball,这个tarball可能很大。

与您的问题无关,您不需要设置

 类似资料:
  • 在过去的几个月里,我一直在试验docker,并享受在容器中构建和运行java应用程序的好处。 几周前,我偶然发现了jib maven插件,并注意到jib可以在不使用docker守护程序的情况下为docker注册表构建映像。 在将jib添加到我的一个项目中并运行(在没有安装docker的VM上)之后,我很惊讶jib竟然构建了一个包含我的项目的映像,并将其推送到远程注册表。 出于好奇,我上网阅读了更多

  • 我正在尝试创建一个管道,使用JIB(通过Maven插件)创建docker图像,并将其推送到我的Gitlab注册表。 当我登录到docker注册表时,这在本地运行良好。 说我有一个。gitlab ci。yml看起来像: 现在我在管道被触发时得到一个异常 我假设我得到了这个错误,因为我还没有运行docker login-u[用户名]-p[密码/令牌] 我怎么会需要一个.gitlab-ci.yml,它使

  • 当我使用docker-maven-plugin构建docker映像时,它失败了 错误:无法执行目标com.spotify:docker-maven-plugin:1.0.0:build(default-cli)on project spring-boot-basic:捕获异常:basedir/root/workspace/spring-boot-basic/spring-boot-basic/sp

  • 问题内容: 我想在命令行上输入-T3来节省时间,因为我希望我能做的所有Maven构建都可以运行多线程。 Maven 3.3.9我用谷歌搜索,但没有发现任何有希望的东西,只是建议为命令行选择添加一个环境变量,并将其附加到命令行上的每个maven调用中。 这样,每次仍然需要手动步骤(输入环境变量的名称)来进行并行构建。 我想在mvn settings.xml文件中进行全局配置。 问题答案: 你不能配置

  • 有没有一种方法可以下载Docker映像/容器,例如,使用Firefox,而不使用内置的。 我被公司防火墙和代理屏蔽了,我无法通过它得到一个洞。 我的问题是我不能使用Docker获取图像,即Docker保存/拉取和其他Docker提供的功能,因为它被防火墙阻止了。