关于this problem,我使用脚本化的Jenkins管道更新了JHipster-Application,现在进入了Jenkinsfile
(部分these hints之后):
[...]
def dockerImage
withEnv(["DOCKER_CREDS=credentials('myregistry-login')"]) {
stage('publish docker') {
sh "./mvnw -X -ntp jib:build"
}
}
使用Jenkins全局凭据myregistry-login
保存在我的Jenkins服务器中到我自己的docker Registry v2 docker-container https://myregistry.mydomain.com
(出于安全原因更改了域)。我可以使用存储在$ docker login myregistry.mydomain.com
中的用户名和密码从本地bash成功完成docker login https://myregistry.mydomain.com
(以及docker login myregistry.mydomain.com:443
和myregistry-login
)。
在pom.xml
中(在these hints以及this,this和this之后):
<plugin>
<groupId>com.google.cloud.tools</groupId>
<artifactId>jib-maven-plugin</artifactId>
<configuration>
<to>
<image>myregistry.mydomain.com:443/username/imagename</image>
<tags>
<tag>${maven.build.timestamp}</tag>
<tag>latest</tag>
</tags>
<auth>
<username>${env.DOCKER_CREDS_USR}</username>
<password>${env.DOCKER_CREDS_PSW}</password>
</auth>
</to>
<container>
<jvmflags>
<jvmflag>-Xms512m</jvmflag>
<jvmflag>-Xmx1G</jvmflag>
<jvmflag>-Xdebug</jvmflag>
</jvmflags>
<mainClass>de.myproject_name.MyApp</mainClass>
</container>
</configuration>
</plugin>
其中username
,imagename
和de.myproject_name.MyApp
是此处的占位符。
不幸的是我得到
[DEBUG] TIMING Retrieving registry credentials for myregistry.mydomain.com:443
[DEBUG] No credentials could be retrieved for registry myregistry.mydomain.com:443
[...]
[ERROR] I/O error for image [myregistry.mydomain.com:443/username/imagename]:
[ERROR] Connect to myregistry.mydomain.com:443 [myregistry.mydomain.com/xxx.xxx.xxx.xxx] failed: Connection refused (Connection refused)
[DEBUG] TIMED Authenticating push to myregistry.mydomain.com:443 : 460.0 ms
[DEBUG] TIMED Building and pushing image : 514.0 ms
[ERROR] I/O error for image [registry-1.docker.io/library/adoptopenjdk]:
[ERROR] Socket closed
因此withEnv
不会转发到Maven和/或jib-maven-plugin无法读取<auth>
-Tag,对吗?我仍然在做什么错?
为什么registry-1.docker.io
出现I / O错误?