Maven JIB возвращает «CertPathValidatorException: проверка подписи не удалась» внутри контейнера arm32v7 / accepttopenjdk docker - PullRequest
0 голосов
/ 12 января 2020

Я использую Raspberry Pi 4 с установленным Docker. Я пытаюсь создать сборочный контейнер для моих Java проектов и позволить сборочному контейнеру создавать Docker изображений, используя Maven JIB . Когда я пытаюсь сделать это в arm32v7 / accepttopenjdk: 13.0.1_9-jdk-hotspot-bioni c контейнер, 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 завершается успешно.

Я пытаюсь создать простой Проект Spring Initialzr java с JIB в качестве подключаемого модуля. Тег сборки в моем pom. xml выглядит следующим образом:

pom. 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 / accepttopenjdk: 13.0.1_9-jdk-hotspot-bioni c* Контейнер 1024 * и выполнил команду maven, но все равно получил ту же ошибку.

Если у вас есть raspberry pi 4 с ОС Debian Buster, эту ошибку можно воспроизвести, выполнив следующие шаги:

  1. Установите docker, используя следующую команду: curl https://get.docker.com | sh
  2. Создайте простой spring initialzr проект и распакуйте его на Raspberry Pi. обновите тег сборки в файле pom. xml, чтобы он выглядел как мой выше. В моем случае распакованный обновленный код находится в /opt/app.
  3. Запустите контейнер docker и go в терминал bash, используя следующую команду: docker run --rm -it -v /opt/app:/opt/app -v /var/run/ docker.sock:/var/run/docker.sock -v $(which docker):$(which docker) arm32v7/adoptope njdk:13.0.1_9-jdk-hotspot-bionic bash
  4. Когда внутри контейнера docker измените каталог на / opt / app: cd /opt/app
  5. Запустите команду maven для компиляции и сборки docker image: ./mvnw clean package -DskipTests

Я не уверен, что это ошибка JIB, ошибка AdoptOpenJDK или я просто что-то пропускаю?

С уважением

1 Ответ

0 голосов
/ 14 февраля 2020

Я столкнулся с чем-то очень похожим с запуском accepttopenjdk на Raspberry Pi внутри изображения docker. эта проблема казалась несколько связанной. В итоге я использовал отличный JDK от Bellsoft . Я использовал глагол gradle вместо maven, но он должен работать так же. Удачи.

from {
  // https://github.com/GoogleContainerTools/jib/issues/2148
  image = "bellsoft/liberica-openjdk-alpine@sha256:91a5cede9b201c98ef6fc13aff270f58f07bee86ed9f508e22c7a883bfef2679"
}
...