关于这个问题,我用脚本化的Jenkins管道更新了JHipster应用程序,现在在Jenkins文件中(部分遵循以下提示):
[...]
def dockerImage
withEnv(["DOCKER_CREDS=credentials('myregistry-login')"]) {
stage('publish docker') {
sh "./mvnw -X -ntp jib:build"
}
}
Jenkins全局凭据
mystracy-login
保存在我的Jenkins-Server到我自己的docker注册表v2 docker-容器https://myregistry.mydomain.com
(出于安全原因更改了域)。我可以使用存储在mystracy-login
中的用户和密码从本地bash成功执行$docker登录myregistry.mydomain.com
(以及docker登录https://myregistry.mydomain.com
以及docker登录myregistry.mydomain.com:443
)。
在
pom中。xml
(遵循以下提示以及这个、这个和这个):
<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插件没有读取
我终于让它工作了。
在Jenkinsfile
中,我将JHipster生成的代码编辑为:
def dockerImage
stage('publish docker') {
withCredentials([usernamePassword(credentialsId: 'myregistry-login', passwordVariable: 'DOCKER_REGISTRY_PWD', usernameVariable: 'DOCKER_REGISTRY_USER')]) {
sh "./mvnw -ntp jib:build" }
}
在pom中。xml
我将jib maven插件配置:
<plugin>
<groupId>com.google.cloud.tools</groupId>
<artifactId>jib-maven-plugin</artifactId>
<configuration>
<from>
<image>adoptopenjdk:11-jre-hotspot</image>
</from>
<to>
<auth>
<username>${DOCKER_REGISTRY_USER}</username>
<password>${DOCKER_REGISTRY_PWD}</password>
</auth>
<image>myregistry.mydomain.com/myuser/my_image</image>
<tags>
<tag>${maven.build.timestamp}</tag>
<tag>latest</tag>
</tags>
</to>
<container>
<jvmFlags>
<jvmFlag>-Xms512m</jvmFlag>
<jvmFlag>-Xmx1G</jvmFlag>
<jvmFlag>-Xdebug</jvmFlag>
</jvmFlags>
<mainClass>com.mypackage.MyApp</mainClass>
<entrypoint>
<shell>bash</shell>
<option>-c</option>
<arg>chmod +x /entrypoint.sh && sync && /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>
</configuration>
</plugin>
在我的远程服务器设置中,我自己的docker注册表v2
作为docker容器运行,该容器通过nginx-agent
发布,带有letscrypt-nginx-proxy-同伴
。在同一个自定义网络桥上运行我自己的jenkins
服务器作为另一个docker容器。
一些测试表明docker注册表的容器名称不能用注册表的公共DNS名称命名(例如,“myregistry.mydomain.com”作为容器名称)。jenkins
docker容器将嵌入式docker dns服务器
放入resolv。conf
,docker将把同一网络中容器的容器名称解析为这些容器的内部网桥网络IP(仅在自定义docker网络的情况下)。
我猜jib必须通过ssl连接以将docker映像推送到docker注册表
容器,并且ssl必须在使用nginx-agent
的容器之前处理,因此必须使用docker注册表
域的外部地址。
此外,还必须配置docker hosts防火墙(根据此链接),以允许从docker容器jenkins
到docker主机的流量。在主机上,它通过带有ssl的nginx代理
再次返回到docker注册表
,对吗?就我而言,这可以归结为:
$ sudo firewall-cmd --info-zone=public
public (active)
target: default
icmp-block-inversion: no
interfaces: enp6s0
sources:
[...]
rich rules:
rule family="ipv4" source address="172.26.0.13/32" accept
问题:- 在我的Jenkins脚本管道部分中有以下代码。我已经在Manage Jenkins下添加了我的私人Docker注册表URL和凭据-- Jenkins表单错误- 代码:-
我有一个小问题与我的docker注册表上openshift源安装。 我创建了一个docker注册表pod: 创建了一条路线: 创建了一个服务: Openshift的Master是在10.0.2.235上的,只有一个节点,现在我已经创建了一个spring boot应用程序,我使用maven插件docker来构建和推送映像。 当我在本地(主计算机上)运行maven push时,工作正常,但如果我在另一
注册厂商账号 打开浏览器访问注册页面 填写正确的邮箱地址后,点击"获取验证码"按钮,系统将自动发送带有注册验证码的邮件.填写验证码和后续的必要信息后,点击注册按钮,完成注册流程. 登录账号 注册成功后,浏览器将自动跳转到登录页面 填写公司名\密码和验证后.登录
问题内容: Nexus UI配置 我在Linux VM上运行Nexus Repository Manager OSS 3.0.1-01,在该VM上,我让nginx致力于将代理http请求保留为https。我的SSL密钥由受信任的CA签名,我创建了一个maven存储库,只要有客户端计算机发布,它就可以正常工作。 同样在此客户端计算机上,当我使用docker客户端并进行docker登录时。我收到各种错
我是GitLab用户。我使用groff脚本制作一本900页的书。输出将存储在输出文件夹中。当作者进行一些更改并推送到GitLab时,Docker映像将生成这本书。 其想法是构建一个docker容器,并将该容器存储在GitLab注册表中。容器的构建工作正常,但我收到一条错误消息。 错误出现在运行脚本中。docker登录不正确。 这就是我的跑步脚本的想法。gitlab ci。yml。我收到以下错误消息
我有一个Maven SpringBoot项目。我想把它推到云工厂。为此,我为Jenkins编写了一个groovy管道脚本。我要补充什么?在脚本和/或pom中。xml将其发布到Artifactory中,这样Jenkins将从Git中提取代码并将其发布到Artifactory。在另一个环境中,我将拉出artifactory版本化的JAR,并将其推送到Cloud Foundry。 假设我的项目的grou