使用jib-maven-plugin我想构建一个带有多个标签的图像。虽然mvn jib:build基本上工作正常,但它“仅”用latest.
我的 Mavenpom.xml定义如下:
<plugin>
<groupId>com.google.cloud.tools</groupId>
<artifactId>jib-maven-plugin</artifactId>
<version>2.8.0</version>
<configuration>
<to>
<image>my-private-registry.org/my-image</image>
</to>
</configuration>
</plugin>
Run Code Online (Sandbox Code Playgroud)
文档显示可以jib.to.tags在 XML 中使用来定义标签列表。但是,我想在 Jenkins 管道中运行构建步骤,即我无法对pom.xml.
运行命令时是否可以传递标签列表mvn,例如通过设置一些-D参数?
我在 Windows 上,这是插件配置:
<plugin>
<groupId>com.google.cloud.tools</groupId>
<artifactId>jib-maven-plugin</artifactId>
<version>3.2.1</version>
<configuration>
<container>
<ports>
<port>8080</port>
</ports>
<format>OCI</format>
</container>
</configuration>
</plugin>
Run Code Online (Sandbox Code Playgroud)
这是我运行的命令:
.\mvnw clean install jib:dockerBuild -Dimage=fullstack:v1
Run Code Online (Sandbox Code Playgroud)
无论我做什么,我都会遇到以下错误:
[ERROR] Failed to execute goal com.google.cloud.tools:jib-maven-plugin:3.2.1:dockerBuild (default-cli) on project SpringBootFullStack: Build
to Docker daemon failed, perhaps you should make sure your credentials for 'registry-1.docker.io/library/eclipse-temurin' are set up correc
tly. See https://github.com/GoogleContainerTools/jib/blob/master/docs/faq.md#what-should-i-do-when-the-registry-responds-with-unauthorized f
or help: Unauthorized for registry-1.docker.io/library/eclipse-temurin: 401 Unauthorized
[ERROR] {"details":"incorrect username or password"}
[ERROR] -> [Help 1]
[ERROR]
[ERROR] To see the full stack trace of …Run Code Online (Sandbox Code Playgroud) 在 distroless java docker image 中更改次要版本。
当前的 java 项目使用 maven jib 来构建 docker 镜像。docker 镜像的默认版本为 java 11。此 docker 镜像的次要 java 版本设置为 11.0.6。
如何将此映像 gcr.io/distroless/java:11 的 java 次要版本从 11.0.6 更改为更高版本。
在过去的几个月里,我一直在试验 docker,并享受在容器内构建和运行 java 应用程序的好处。
几周前,我偶然发现了jib maven 插件,并注意到 jib 可以在不使用 docker daemon 的情况下构建镜像到 docker 注册表。
在将 jib 添加到我的一个项目并运行mvn clean install jib:build(在没有安装 docker 的 VM 上)之后,我惊讶地发现 jib 实际上构建了一个包含我的项目的映像并将其推送到远程注册表。
出于好奇,我上网阅读了更多关于 jib 如何在没有安装 docker 的情况下构建和推送 docker 镜像的信息,但几乎没有找到关于该主题的信息。我设法找到了一篇文章,它解释了一些不使用 docker 来创建图像的方法,并试图jib:build通过阅读它的源代码来了解 Maven 目标的工作原理,但是这两篇文章都没有给我任何关于运行时幕后发生的事情的见解jib:build.
如果有人分享更多关于 jib maven 插件以及它如何在不使用 docker 守护进程的情况下在幕后实际构建和推送图像,我将不胜感激。
每当容器从 jib 映像启动时,是否可以使用 cmd 或入口点或 jib maven 插件中的任何其他机制运行 Linux 命令,然后启动 java 进程?
就我而言,我想运行这个命令:
echo "127.0.0.1 $HOSTNAME" >> /etc/hosts
Run Code Online (Sandbox Code Playgroud) 看起来像是从 Jib 3.0 开始;您的 Java 应用程序不再拥有默认的 distroless 映像。相反,如果您不指定,您将获得一个 AdoptOpenjdk 基础镜像。您仍然可以按照此链接配置和使用 distroless 基础映像。我只是想知道 采用的 OpenJDK 镜像是否比 distroless 更安全、更纤薄?有什么好处?