我开发了一个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
如果仔细查看日志消息,Jib确实使用了通过from.auth.usernamePassword
为adoptopenjdk
(托管在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 是 Google 开发的可以直接构建 Java 应用的 Docker 和 OCI 镜像的类库,以 Maven 和 Gradle 插件形式提供。 通过 Jib,Java 开发者可以使用他们熟悉的 Java 工具来构建容器。Jib 是一个快速而简单的容器镜像构建工具,它负责处理将应用程序打包到容器镜像中所需的所有步骤。它不需要你编写 Dockerfile 或安装 Docker,而且可以直接集成
我正在使用Maven Jib插件将我的应用程序部署到Gitlab docker注册表。如果我使用并输入用户名和密码,我可以成功登录gitlab注册表。我可以看到