使用“mvncompilejib:build”推送到 Docker 注册表失败

2024-05-14

我正在尝试使用以下命令构建并将我的 docker 映像部署到私有注册表谷歌联合投资银行Maven 插件。但是,它因访问私有注册表时出现问题而失败。

我已经安装了Docker 桌面 v19.03.1 on my Windows 10机器。接下来,我尝试使用 Google JIB Maven 插件构建我的 Spring Boot 应用程序,然后推送在私有注册表上构建的映像。

我已将“example.registry.com”的 CERT 添加到 Windows 受信任的 CERTS 中。我能够使用 docker 命令登录私有注册表来验证这一点,如下所示:-

docker 登录 example.registry.com

此命令返回身份验证成功,这意味着我添加的 CERT 已被接受。

登录私人注册表后,我能够PULL and PUSH使用 docker 命令行将图像成功发送到“example.registry.com”。

下面是我的POM.xml file.

<plugin>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
<plugin>
    <groupId>com.google.cloud.tools</groupId>
    <artifactId>jib-maven-plugin</artifactId>
    <version>1.5.1</version>
    <configuration>
        <to>
           <image>example.registry.com/inventory-service-docker:1.0</image>
            <auth>
               <username>plaintextusernameforRegistry</username>
               <password>plaintestpasswordforRegistry</password>
           </auth>
        </to>
        <from>                           
             <image>openjdk:8</image>
        </from>
        <container>
           <ports>
              <port>8089</port>
           </ports>
        </container>
        <allowInsecureRegistries>true</allowInsecureRegistries> <!-- this is commented on the first run.-->
    </configuration>
</plugin>

当我从带有 pom.xml 文件的目录中的控制台运行“mvncompilejib:build”命令时,它确实开始处理,但在稍后阶段失败并出现以下错误:-

[ERROR] 无法在项目 inventory-service-docker 上执行目标 com.google.cloud.tools:jib-maven-plugin:1.5.1:build (default-cli): 构建镜像失败,也许你应该使用支持 HTTPS 的注册表或设置配置参数“allowInsecureRegistries”:无法验证服务器https://example.registry.com/v2/inventory-service-docker/blobs/sha256:9cc2ad81d40d54dcae7fa5e8e17d9c34e8bba3b7c2cc7e26fb22734608bda32e https://example.registry.com/v2/inventory-service-docker/blobs/sha256:9cc2ad81d40d54dcae7fa5e8e17d9c34e8bba3b7c2cc7e26fb22734608bda32e因为只允许安全连接。

当我按照上面错误的建议设置配置参数“allowInsecureRegistries”后运行相同的命令时,我收到如下不同的错误:-

[ERROR] 无法在项目 inventory-service-docker 上执行目标 com.google.cloud.tools:jib-maven-plugin:1.5.1:build (default-cli):构建映像失败:无法通过注册表 example.registry 进行身份验证。 com/inventory-service-docker 因为:sun.security.validator.ValidatorException:PKIX 路径构建失败:sun.security.provider.certpath.SunCertPathBuilderException:无法找到请求目标的有效证书路径

看起来我在使用未安全连接到“example.registry.com”的 JIB 时缺少一些配置。


(在开始之前,请不要使用 Jib 1.5.x,因为这些版本存在网络性能问题。)

JVM 不使用 Windows 证书存储。这doc https://www.benecke.cloud/java-runtime-environment-jre-how-to-import-certificates/ says

JRE 的一大问题是它完全忽略 Windows 证书存储。它不使用 Windows 证书存储,而是使用自己的实现

我刚刚在另一个答案中发现的 Windows 的一个潜在选择是启动 Java-Djavax.net.ssl.trustStoreType=WINDOWS-ROOT https://stackoverflow.com/a/52330588/1701388。但我还没有验证过这是否有效。

另一种方法是将您的证书添加到默认的 Java 证书存储(信任库)文件(cacerts)。它通常位于<JDK>/lib/sercurity/ or <JRE>/jre/lib/security/.

有多种方法可以添加证书(例如,使用各种 GUI 工具)。例如,

  • 在命令行上
keytool.exe -import -storepass "changeit" -keystore "C:\Program Files (x86)\Java\jre1.8.0_144\lib\security\cacerts" -alias certificate.cer -file "C:\certificate.cer" -noprompt
  • 使用 GUI 工具 https://github.com/GoogleContainerTools/jib/blob/master/docs/self_sign_cert.md#2-load-jre-ca-certificates called 密钥库浏览器

最后,对于那些想要获得更多解决此类 Java 证书问题的想法的人,请查看此内容comment https://github.com/GoogleContainerTools/jib/issues/1966#issuecomment-529662786.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用“mvncompilejib:build”推送到 Docker 注册表失败 的相关文章

  • Maven:命令行下载pom.xml中描述的依赖项

    我想知道maven命令行下载pom xml中描述的依赖项 是这样的 mvn dependency copy dependencies Try the 依赖 离线 http maven apache org plugins maven dep
  • Spring boot 2+日志详细日志不起作用,配合Logback、Hibernate + Weblogic

    I use 甲骨文11 x 春季启动 2 x maven weblogic 作为外部服务器 入口点 SpringBootConfiguration SpringBootApplication public class WebSpringBo
  • 无法通过docker连接到ASP.NET Core

    大家好 人们已经关注这个问题太久了 需要一些帮助 我制作了一个 ASP NET Core 网站 没有什么特别的 只是 VS 2017 v 1 1 附带的模板 我使用 dotnet core cli 发布网站并使用此 dockerfile 构
  • 为什么 html 页面没有在 thymeleaf 中显示?

    我在用着spring boot和thymeleaf查看引擎 问题是控制器没有显示正确的 html 页面 并且总是显示Whitelabel Error Page 控制器 package com example controller impor
  • Docker、maven 和 settings.xml

    给出以下简单的 Dockerfile FROM maven 3 6 3 ibmjava 8 alpine Copy maven settings COPY settings xml usr share maven ref COPY pom
  • 具有空值的 Spring MVC @Path 变量

    Am developing an application using spring boot In Resource am using path variable PathVariable annotation and Request Pa
  • 错误:无法在 scala 中找到或加载主类

    安装 eclipse scala 插件和 eclipse maven scala 插件后 我是 scala 新手 所以我尝试确保在测试 scala hello world 项目后环境正常工作 它按预期工作 但我在尝试执行我从公司存储库中签出
  • 如何调试使用maven构建的android应用程序

    我目前正在尝试从 Eclipse 调试我的设备上的 Android 应用程序 设备已添加 我可以在控制台和 Eclipse 中看到它 控制台 Windows adb devices List of devices attached 0019
  • 使用 Nginx 时缺少 HTTP 状态代码名称

    我正在使用 Nginx 将所有 HTTP 请求重定向到 HTTPS 在我的 Spring Boot 应用程序中 这是我正在使用的 nginx 配置 通过它我可以将所有请求重定向到 Https 但是当我这样做时 我得到了状态码返回正确 但没有
  • 将 RequestBody json 转换为对象 - Spring Boot

    我是 java 开发的初学者 但之前有 PHP 和 Python 等编程语言的经验 对于如何进行 Spring Boot 的开发几乎没有什么困惑 我正在开发一个rest API 它有以下请求 key value key1 value1 pl
  • Docker Python 脚本找不到文件

    我已经成功构建了一个 Docker 容器 并将应用程序的文件复制到 Dockerfile 中的容器中 但是 我正在尝试执行引用输入文件 在 Docker 构建期间复制到容器中 的 Python 脚本 我似乎无法弄清楚为什么我的脚本告诉我它无
  • Gradle 未在 Android Studio 中同步

    我是 Android studio 的新手 我正在尝试建立一个新项目 但遇到以下错误消息 Could not find com android tools build gradle 7 0 4 Searched in the followi
  • 重启docker Windows 10命令行

    我试图弄清楚如何在命令行中重新启动 docker 以便我可以制作一个 bat 脚本来重新启动它并启动一些容器 我使用管理员访问权限创建了一个 dos 提示符并运行以下命令 PS C Windows system32 gt net stop
  • Maven 未运行 Spring Boot 测试

    我有一个要测试的 Spring Boot REST API 我可以在 Eclipse 中手动运行测试 无需 Maven 并通过将应用程序作为 JUnit 测试运行 它运行良好并显示结果 但是mvn test正如您将在下面发现的那样 它不起作
  • cucumber.json 报告被重新运行场景报告覆盖

    我有一个具有相同技术堆栈 JAVA1 8 Cucumber JVM JUnit Maven 的 UI 测试项目和一个 API 测试项目 这两个项目都向我展示了这个问题 可能是因为两者都存在相同的依赖关系集 我使用了使用 maven sure
  • 带有 mysql 数据的 WordPress 图像

    是否有包含 wordpress 和 mysql 数据的可用图像 当我提交并备份映像时 不包括 mysql 数据 我更喜欢两者都用一张图片 我尝试使用这个 Dockerfile 创建这样的图像 FROM tutum lamp latest R
  • Jhipster:对非管理员隐藏实体

    问候 Java 潮人 我刚刚生成了一个 jhipster 项目并创建了一些实体 我想通过将某些实体限制为仅管理员用户来隐藏它们 我该如何实现这一目标 Thanks 初读Spring安全文档 http docs spring io autor
  • 在docker中将秘密作为环境变量注入安全吗?为什么ECS和EKS支持它?

    我很难协调一些在线建议 即将机密 通常是密码 作为环境变量注入 docker 容器与 AWS ECS 甚至 EKS 的本机功能 不安全 其中存储在 AWS Secrets Manager 中的机密作为环境提供变量 我想使用这些平台的原生功能
  • docker登录 - 存储凭据时出错 - 写入权限错误

    我正在运行一个docker login命令作为 Bamboo 构建作业的一部分 命令文本通过以下方式获得aws ecr get login调用并在子 shell 中执行 该命令失败并显示Error saving credentials er
  • 更改Docker容器中的mysql密码

    我如何更改 docker 容器中的 root 密码 因为一旦我停止 mysql 服务 容器就会自动停止 我应该停止 mysql 容器并部署一个新容器吗 您可以使用正在运行的容器更改它docker exec session https doc

随机推荐

  • 如何访问 Android 心率传感器原始数据? (反射光,不是心跳)

    心率传感器上的 android sdk 仅返回计算出的 bpm 我对此不感兴趣 我需要访问 Android 心率传感器原始数据 例如就反射值的强度而言将会很大 因为心率传感器基本上使用 LED 并测量随时间变化的反射率 如果可能 访问由任何
  • 如何在使用cmake完成make后打印消息?

    我正在尝试使用 CMake 完成构建过程后打印消息 我只是想在之后通知用户make命令已完成 没有任何错误 我该怎么做 我试过add custom target 但我无法选择何时跑步 另外 我尝试过add custom command 它再
  • 为什么 matplotlib 默认不保存整个图形?

    这可能是几乎每个使用 matplotlib 的人都会遇到的问题 如果您生成一个图形 通常包含轴标签和图例 并使用默认设置保存它 您将获得裁剪后的图像 演示代码 import matplotlib pyplot as plt def plot
  • 通过 GitHub、Sonatype Maven 存储库提供 JavaDocs [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 尽管 Github 为 Java 开源项目提供了一个不错的家园 但与更成熟的开源托管场所相比 仍然缺少一些东西 到目前为止 我发现 S
  • 为什么 MySQLi 库本身不支持命名参数?

    正确的 MySQLi 参数化查询语法来自http php net manual en mysqli quickstart prepared statements php http php net manual en mysqli quick
  • 再现频率矩阵图

    我想在 R 中重新创建一个情节 情节如下 来源 Boring E G 1941 作为动态平衡的统计频率 心理学评论 48 4 279 这略高于我的工资等级 能力 因此在这里询问 无聊的状态 第一次 A 只能出现 从不 0 或 总是 1 在
  • 从 Yii2 中的联结表检索数据

    我试图从 Yii2 中的连接表获取数据无需额外查询 我有 2 个模型 用户 组 通过连接表 user group 关联 在 user group 表中 我想存储此关系的额外数据 管理标志 将数据添加到连接表的最佳方法是什么 link 方法接
  • 未定义,当从 Selenium 触发时,Chrome 通知中未定义

    我正在致力于自动化一个用 Python 编写的网站 并使用 Angular 其中有很多确认通知 我遇到的问题是 Behat 似乎无法识别这些通知 更不用说允许我与它们交互了 我附上了通知的屏幕截图 以及 Behat 生成的 未定义 未定义
  • 使用 Swift 创建 NSAlert

    我有在 Objective C 中创建和 NSAlert 的代码 但我现在想在 Swift 中创建它 该警报旨在确认用户想要删除文档 我想要 删除 按钮来运行删除功能 而 取消 按钮只是为了消除警报 我怎样才能用 Swift 写这个 NSA
  • 防止 ASP.Net 中的表单重新提交(不重定向到我自己)

    我有一个带有表单元素的母版页
  • 当参数为泛型时,Type.GetMethod 的类型数组中应包含哪些类型?

    如果我想通过反射调用泛型方法 我可以轻松使用this https stackoverflow com questions 232535 how to use reflection to call generic method技术 除非 该方
  • CSS Font-Face url 不起作用?

    我在使用 font face 选择器时遇到了一些问题 我有以下问题 font face font family MuseoSans 700 src url http mysite co uk clients reload Images st
  • 播放选定的音频,同时暂停/重置其他音频

    我有两个通过按钮的单击事件播放的音频元素 如果选择了另一个元素 我已成功地暂停其中一个元素 但还需要将暂停元素设置回 0 0 秒 即暂停和重置 我知道 Javascript 目前没有stop 导致的方法假设这将通过设置其来完成current
  • 反转java String.split()效果的方法? [复制]

    这个问题在这里已经有答案了 我正在寻找一种将字符串数组组合成分隔符的方法 细绳 与 split 相反 在我尝试自己编写之前想询问一下论坛 因为 JDK 拥有一切 据我所知 JDK 中没有任何方法可以实现这一点 阿帕奇公共语言 http co
  • 如何将从 date_parse 返回的日期数组转换回日期字符串

    我有一个由 php 例程 date parse 返回的格式的日期数组 我需要将此日期数组转换回日期字符串 我正在寻找一个与 date parse 例程相反的函数 这是一个接受日期数组作为参数并返回日期字符串的函数 http php net
  • Sencha Touch 和远程服务器上的身份验证

    我希望收到您关于使用 PhoneGap 和 Sencha Touch 的应用程序以及带有 Active Directory 的 NET 服务器的身份验证机制的反馈 因此 我们需要在移动设备上存储用户凭据 以便用户每次希望使用该应用程序时都不
  • 运行时错误“1004”:对象“_Global”的方法“Range”失败

    我在使用 Excel 时遇到问题 有一个生成参考号的表单 但是当我尝试生成参考号时 它有一条错误消息 运行时错误 1004 对象 Global 的方法 Range 失败 当我点击 调试 按钮时 它显示的代码如下 它突出显示代码第 4 行的错
  • React Native ios运行问题

    我是反应本机和运行新手yarn ios我的 React Native 项目不断失败并出现以下错误 构建失败 以下构建命令失败 编译C Users gift Library Developer Xcode DerivedData gainer
  • Mongodb聚合数组大小大于匹配项[重复]

    这个问题在这里已经有答案了 我有一个集合 其中投资是 mongodb 文档内的一个数组 现在使用聚合 我尝试过滤投资长度超过 5 倍的结果 然后使用匹配查询进行下一步处理 Collection id 000000 investments h
  • 使用“mvncompilejib:build”推送到 Docker 注册表失败

    我正在尝试使用以下命令构建并将我的 docker 映像部署到私有注册表谷歌联合投资银行Maven 插件 但是 它因访问私有注册表时出现问题而失败 我已经安装了Docker 桌面 v19 03 1 on my Windows 10机器 接下来