Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/maven/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Spring boot 如何使用jib maven插件构建docker映像,但默认情况下不推送?_Spring Boot_Maven_Jib - Fatal编程技术网

Spring boot 如何使用jib maven插件构建docker映像,但默认情况下不推送?

Spring boot 如何使用jib maven插件构建docker映像,但默认情况下不推送?,spring-boot,maven,jib,Spring Boot,Maven,Jib,我有一个简单的SpringBoot应用程序,我想用它来构建docker映像。 以下是我的插件配置: <plugin> <groupId>com.google.cloud.tools</groupId> <artifactId>jib-maven-plugin</artifactId> <version>2.1.0</version> <configuration>

我有一个简单的SpringBoot应用程序,我想用它来构建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>

com.google.cloud.tools
jib maven插件
2.1.0
openjdk:11jdk-slim
用户名/应用程序名
最新的
${project.version}
演示应用程序
8080
8787
我只想在本地构建映像并运行它。我不想一次建成并推送到docker注册表

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


有没有一种方法可以禁用推送,而另一个目标就是将图像推送到注册表?

既然你说
jib:dockerBuild
不是一个选项,最接近的解决方法就是
jib:buildTar
;目标在
目标/jib image.tar处创建一个本地tarball(路径可通过
配置)。第一次运行
jib:buildTar
(或任何
jib:…
目标)将构建和缓存构建映像所需的一切。因此,就构建层而言,后续的
jib:build
运行将是不可操作的。它只需要发送远程注册表中缺少的层

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



与您的问题无关,您不需要设置
latest
,因为目标图像引用
username/appname
已经暗示
username/appname:latest
配置用于在我刚刚检查过的
顶部推送额外的标签,并且可以通过Jib本地构建图像。首先确保Docker守护进程正在本地运行。然后像这样做:

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

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

从Jib文档中,您可以运行

mvn jib:dockerBuild

这将使用Docker守护程序进行构建。

您是否尝试过
mvn jib:dockerBuild
?使用jib:dockerBuild只构建映像而不推送,但它需要Docker守护程序正常运行?选择jib的主要原因是我们不需要在CI服务器上运行Docker守护程序。