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

Maven JIB在arm32v7/adoptopenjdk docker容器中返回“CertPathValidatorException:签名检查失败”

丌官玺
2023-03-14

我正在使用我的树莓皮4与Docker安装。我正在尝试为我的Java项目创建一个构建容器,并让该构建容器使用Maven JIB创建Docker映像。当我在arm32v7/adoptopenjdk:13.0.1_9-jdk-hotspot-bionic容器中尝试此操作时,JIB给出以下错误:

[ERROR] I/O error for image [registry-1.docker.io/arm32v7/adoptopenjdk]:
[ERROR]     PKIX path validation failed: java.security.cert.CertPathValidatorException: signature check failed

当我在笔记本电脑上的Ubuntu虚拟机上尝试相同的设置时,安装了Docker和openjdk:13 jdk容器,它成功了。

我正在尝试使用JIB作为构建插件构建一个简单的SpringInitialZrJava项目。我的pom中的build标记。xml如下所示:

波姆。xml

<build>
  <finalName>thaveke-backend</finalName>
  <plugins>
    <plugin>
      <groupId>com.google.cloud.tools</groupId>
      <artifactId>jib-maven-plugin</artifactId>
      <version>1.8.0</version>
      <configuration>
        <from>
          <image>arm32v7/adoptopenjdk:13.0.1_9-jdk-hotspot-bionic</image>
        </from>
        <to>
          <image>backend</image>
        </to>
      </configuration>
      <executions>
        <execution>
          <phase>package</phase>
          <goals>
            <goal>dockerBuild</goal>
          </goals>
        </execution>
      </executions>
    </plugin>
  </plugins>
</build>

由于PKIX错误,我立即想到了一个过时的cacerts,因此我将cacerts文件从openjdk:13 jdk容器复制到arm32v7/adoptionopenjdk:13.0.1_9-jdk-hotspot-bionic容器,并运行maven命令,但仍然收到相同的错误。

如果您使用Debian Buster OS的raspberry pi 4,则可以使用以下步骤复制此错误:

  1. 使用以下命令安装docker:curlhttps://get.docker.com| sh
  2. 创建一个简单的spring initialzr项目,并将其解压缩到raspberry pi上。更新pom中的构建标记。xml文件看起来像我的上面。在我的例子中,未打包的更新代码位于/opt/app下
  3. 运行docker容器并使用以下命令进入bash终端:docker Run--rm-it-v/opt/app:/opt/app-v/var/Run/docker。sock:/var/run/docker。sock-v$(哪个docker):$(哪个docker)arm32v7/adoptope njdk:13.0.1_9-jdk-hotspot-bionic bash
  4. 在docker容器内时,将目录更改为/opt/app:cd/opt/app
  5. 运行maven命令编译和构建docker映像:/mvnw清洁包-DskipTests

我不确定这是一个JIB错误,一个OpenJDK错误,还是我忽略了什么?

问候

共有1个答案

毋胜涝
2023-03-14

我在jib docker图像中的raspberry pi上运行了类似的OpenJDK。这个问题似乎有些关联。我最终使用了不同于bellsoft的jdk。我使用的是GradleJib而不是maven插件,但它应该也能工作。祝你好运

from {
  // https://github.com/GoogleContainerTools/jib/issues/2148
  image = "bellsoft/liberica-openjdk-alpine@sha256:91a5cede9b201c98ef6fc13aff270f58f07bee86ed9f508e22c7a883bfef2679"
}
 类似资料:
  • 问题内容: 在mem_limit太低的docker容器崩溃后,如何 在 容器中检 入 该容器的mem_limit?如果mem_limit设置为低,我想在启动时显示错误消息并退出。 问题答案: 在容器中为我工作,感谢塞巴斯蒂安的想法

  • 问题内容: 我正在研究存在的多个实现以及多个的问题。尽管共有几个需要设置的通用变量,但它们也有不同的变量,需要它们各自实现某些特定功能。为了简洁起见,我想让setter使用方法链接,例如: 和 依此类推,有几种不同的实现。从技术上讲,这可以完成我想要的一切,但是,这种方法对执行方法链接时的方法调用顺序很敏感。以下是方法未定义的编译错误: 要求开发人员考虑链中方法调用的顺序。为了避免这种情况,我想让

  • 我试图利用Laravel5.7中新的签名中间件,但由于某些原因,生成的签名URL返回403个无效签名。 我使用最新的Laravel版本,PHP 7.2 这是我的web.php路线: 这是在我的控制器: 生成URL并显示如下内容: https://example.com/report/1/1?expires=1545440368 但是,当我点击链接时,结果是403,并显示消息:“无效签名” 有什么想

  • 最近我需要在Java中使用RSA对一个字符串进行签名,并在C++中验证签名。 在Java,现在我认为一切都是好的,我创建了public.keystore和private.keysore,可以成功地对数据进行签名和veify。但是当我试图用C++验证它时,它显示签名失败。 这是我的Java代码,在Java,我将数据签名到base64String,并将其保存在我的本地文件中,保存为“sig.dat”,

  • 问题内容: 使用,我有一个用于创建视图的查询,并且试图显示 月份的名称 而不是整数。 在我的数据库中,位于列中。查询中返回日期的行是: 这将返回整数的年份和月份的列。我想返回月份名称)。我试过了: 这显然是不正确的,因为我得到 ‘AS’附近的语法不正确 信息。我的查询的正确语法是什么? 问题答案: 这将为您提供月份的全名。 如果您只想要前三个字母,可以使用此

  • 我正在构建一些函数,以使用sign client PHP API和模型创建JSON。我正在使用API在docusign上创建一个信封,并向签名者发送电子邮件,让他们在docusign上签名。我没有使用嵌入式签名。我在API和plan to get以及API plan中这样做,所以不会有所有基于web的访问。 我有一个或多个签名者,在他们签名后,我需要将他们指向我网站上的URL,在那里他们可以付款。