构建含推荐插件的Jenkins镜像时插件下载URL无响应问题
Jenkins镜像构建插件下载失败(eastamerica.cloudflare.jenkins.io无响应)解决方案
问题背景
构建包含推荐插件的Jenkins LTS JDK21镜像时,拉取基础镜像、更新自有证书步骤正常,但执行jenkins-plugin-cli安装插件时,出现org.apache.http.NoHttpResponseException错误,目标地址eastamerica.cloudflare.jenkins.io:443无响应,本地笔记本可正常访问该地址。
解决方案
1. 更换插件源地址
默认CDN源可能因地域或网络策略导致访问不畅,可在插件安装命令中指定其他更新中心地址:
RUN jenkins-plugin-cli --url https://updates.jenkins.io/update-center.json -f /usr/share/jenkins/ref/plugins.txt \ && mkdir -p $JENKINS_HOME && chown -R jenkins:jenkins $JENKINS_HOME
也可使用国内合规镜像源地址替代,避免跨地域网络问题。
2. 调整Docker构建网络配置
容器内网络环境与本地不同,可通过以下方式修复:
- 指定公共DNS:构建时添加DNS参数,解决域名解析异常:
docker build --dns 8.8.8.8 -t your-jenkins-image . - 传递代理环境变量:如果本地通过代理访问外网,构建时注入代理参数:
docker build --build-arg HTTP_PROXY=http://your-proxy-address:port \ --build-arg HTTPS_PROXY=http://your-proxy-address:port \ -t your-jenkins-image .
3. 离线安装插件
提前在本地下载所有需要的插件,构建时直接复制到容器内,跳过在线下载:
- 本地执行插件下载命令:
jenkins-plugin-cli -f plugins.txt --download-directory ./jenkins-plugins - 修改Dockerfile,复制本地插件到容器:
COPY ./jenkins-plugins /usr/share/jenkins/ref/plugins/ RUN mkdir -p $JENKINS_HOME && chown -R jenkins:jenkins $JENKINS_HOME
4. 验证容器内证书信任
即使更新了自有证书,容器可能未信任目标地址的CA证书,可手动导入:
- 本地获取目标地址证书:
openssl s_client -connect eastamerica.cloudflare.jenkins.io:443 < /dev/null | sed -ne '/-BEGIN CERTIFICATE-/,/-END CERTIFICATE-/p' > jenkins-cf.crt - 在Dockerfile中添加证书导入步骤:
COPY jenkins-cf.crt /usr/local/share/ca-certificates/ RUN update-ca-certificates
内容的提问来源于stack exchange,提问作者Senthil13




