Gradle构建Jenkins镜像时Docker COPY命令失败:找不到id_rsa
Gradle构建Docker镜像时COPY id_rsa失败的解决办法
问题场景
在Gradle构建流程中,尝试将私钥文件id_rsa复制到Jenkins镜像时,Dockerfile的COPY命令执行失败,报错如下:
#8 [3/5] COPY id_rsa /root/.ssh/id_rsa #8 ERROR: failed to calculate checksum of ref moby::t3o0ztz0sagnjtmsnde7vh23m: "/id_rsa": not found
完整Dockerfile
FROM jenkins/jenkins:lts-jdk11 COPY plugins.txt /usr/share/jenkins/ref/plugins.txt COPY id_rsa /root/.ssh/id_rsa RUN jenkins-plugin-cli --plugin-file /usr/share/jenkins/ref/plugins.txt COPY seedJob.xml /usr/share/jenkins/ref/jobs/seed-job/config.xml ENV JAVA_OPTS -Djenkins.install.runSetupWizard=false
已尝试的操作
- 直接执行
docker build -t testimage:1 .可成功构建,确认问题仅出现在Gradle构建场景中 - 将
id_rsa移动至多个目录(含与Dockerfile同目录),问题未解决 - 替换
COPY为ADD命令,报错信息一致 - 尝试给文件添加
.txt扩展名,无效 - 注意到报错中文件名前多了一个
/,推测问题出在源文件名的处理逻辑上
解决方案
在build.gradle的docker配置块的files部分,显式声明需要复制的id_rsa文件即可。Docker构建时用到的所有本地文件/目录,都必须在此处声明。配置示例如下:
docker { name "${project.name}:${project.version}" files "plugins.txt", "seedJob.xml", "id_rsa" }
内容的提问来源于stack exchange,提问作者ebilly
相关产品推荐
相关产品推荐

