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

jib-maven-plugin image I/O错误[registry-1.docker.io/library/adoptopenjdk]

尉迟韬
2023-03-14

我开发了一个Dockerized Spring Boot应用程序,使用AdoptOpenJDK作为基本映像,并使用jib-maven-plugin

我的插件配置是:

                <plugin>
                    <groupId>com.google.cloud.tools</groupId>
                    <artifactId>jib-maven-plugin</artifactId>
                    <version>${jib-maven-plugin.version}</version>
                    <configuration>
                        <from>
                            <image>adoptopenjdk:11-jre-hotspot</image>
                        </from>
                        <to>
                            <image>public/my-app</image>
                            <tags>
                                <tag>latest</tag>
                                <tag>${project.version}</tag>
                            </tags>
                        </to>
                        <container>
                            <entrypoint>
                                <shell>bash</shell>
                                <option>-c</option>
                                <arg>/entrypoint.sh</arg>
                            </entrypoint>
                            <ports>
                                <port>8080</port>
                            </ports>
                            <environment>
                                <SPRING_OUTPUT_ANSI_ENABLED>ALWAYS</SPRING_OUTPUT_ANSI_ENABLED>
                                <JHIPSTER_SLEEP>0</JHIPSTER_SLEEP>
                            </environment>
                            <creationTime>USE_CURRENT_TIMESTAMP</creationTime>
                        </container>
                        <extraDirectories>
                            <paths>src/main/jib</paths>
                            <permissions>
                                <permission>
                                    <file>/entrypoint.sh</file>
                                    <mode>755</mode>
                                </permission>
                            </permissions>
                        </extraDirectories>
                    </configuration>
                </plugin>

一切正常,在启动./mvnw package-pprod-dskiptests jib:build-t16.0c时,应用程序已经正确构建。现在,我将应用程序集成到一个CI/CD Jenkins管道中,并创建一个类似于第一个的命令,但使用变量传递Auth数据:

 ./mvnw -ntp -T2.0C jib:build -Djib.from.auth.username=myUserName -Djib.from.auth.password=mygitlabtoken01 -Dimage=registry.gitlab.com/myapp -X 
[INFO] Using credentials from Docker config (/Users/myUser/.docker/config.json) for registry.gitlab.com/neoris-emea-internal/ianthe/ianthe-app/ianthe
[DEBUG] attempting bearer auth for registry.gitlab.com/app...
[INFO] The base image requires auth. Trying again for adoptopenjdk:11-jre-hotspot...
[INFO] Using credentials from <from><auth> for adoptopenjdk:11-jre-hotspot
[DEBUG] Trying basic auth for adoptopenjdk:11-jre-hotspot...
[DEBUG] configured basic auth for registry-1.docker.io/library/adoptopenjdk
[DEBUG] TIMED   Authenticating push to registry.gitlab.com : 1091.927 ms
[DEBUG] TIMED   Building and pushing image : 1122.522 ms
[ERROR] I/O error for image [registry-1.docker.io/library/adoptopenjdk]:
[ERROR]     javax.net.ssl.SSLHandshakeException
[ERROR]     Remote host terminated the handshake
    null

共有1个答案

暨弘毅
2023-03-14

如果仔细查看日志消息,Jib确实使用了通过from.auth.usernamePasswordadoptopenjdk(托管在Docker Hub上)指定的凭据。

Using credentials from <from><auth> for adoptopenjdk:11-jre-hotspot

注下面一行表示Docker配置用于registry.gitlab.com(目标注册表)。

Using credentials from Docker config (/Users/myUser/.docker/config.json) for registry.gitlab.com/neoris-emea-internal/ianthe/ianthe-app/ianthe

关于SSLHandShakeException,它与任何Docker凭据无关。错误来自低得多的网络层(TLS协议),因此故障与Jib或Jenkins上JVM中运行的任何应用程序根本无关。它基本上告诉您,JVM上的任何Java应用程序都不能与某些主机建立安全的TLS连接。对于TLS握手失败没有简单的答案或解决方案,所以如果可能的话,请从网络和TLS专家那里获得一些帮助。也可以看看其他的SO问题,比如这个问题。

 类似资料:
  • 我正在使用OpenShift版本: 我的docker版本是: 要在我的计算机上启动本地OpenShift群集,我执行了以下步骤:https://github.com/openshift/origin/blob/master/docs/cluster_up_down.md#linux 我想部署一个Redis实例,由于没有默认的Redis模板(有20个默认模板),我从URL将其加载为JSON模板:ht

  • Smart_ptr库如何改进你的程序? 何时我们需要智能指针? Smart_ptr如何适应标准库? scoped_ptr scoped_array shared_ptr shared_array intrusive_ptr weak_ptr Smart_ptr总结

  • 我正在将应用程序从WildFly 8升级到WildFly 12。检查了两个版本中的standalone-full.xml,看起来不错。服务器启动,但耳朵的部署失败并出错。 2018-05-29 14:44:34,674 ERROR[org.jboss.as.controller.management-操作](控制器启动线程)WFLYCTL0013:操作("add")失败-地址: ([ ("core

  • 尝试与JIB(容器化您的GradleJava项目)与我的Java项目集成。 在此留档之后:https://github.com/GoogleContainerTools/jib/tree/master/jib-gradle-plugin 在我的项目中添加了以下内容: Gradle版本是:5.6.4 使用“/gradlew”构建的编译工作正常。但是,当执行“gradle jib”时,会出现以下错误:

  • Jib

    Jib 是 Google 开发的可以直接构建 Java 应用的 Docker 和 OCI 镜像的类库,以 Maven 和 Gradle 插件形式提供。 通过 Jib,Java 开发者可以使用他们熟悉的 Java 工具来构建容器。Jib 是一个快速而简单的容器镜像构建工具,它负责处理将应用程序打包到容器镜像中所需的所有步骤。它不需要你编写 Dockerfile 或安装 Docker,而且可以直接集成

  • 我正在使用Maven Jib插件将我的应用程序部署到Gitlab docker注册表。如果我使用并输入用户名和密码,我可以成功登录gitlab注册表。我可以看到