无法通过Docker运行jenkins-cli,需传递pom.xml至Jenkins服务器求助
搞定Docker运行jenkins-cli+传递pom.xml的问题
嘿,我来帮你捋清楚这俩事儿——COPY步骤报错和pom.xml传递的解决方案,都是实操过的经验,放心看~
先解决COPY jenkins-cli的构建错误
你说构建到第22/27步的COPY指令炸了,大概率踩了这几个坑:
- 本地文件没在构建上下文里:Docker的COPY是从你执行
docker build的那个目录(也就是构建上下文)里拿文件的,要是你的jenkins-cli.jar不在这个目录,或者你写的路径跟实际文件位置对不上,肯定报错。 - 指令语法写错了:比如你只写了
COPY jenkins-cli没写目标路径,或者文件名拼错了(比如把jar写成了jar包)。
给你俩修正方案:
- 本地文件对齐法:先把
jenkins-cli.jar放到你跑docker build的文件夹里,然后把COPY指令写全:# 把本地的jenkins-cli.jar复制到容器的/jenkins-cli目录下 COPY jenkins-cli.jar /jenkins-cli/ - 直接在镜像里下载:省得本地来回拷贝,直接在Dockerfile里从Jenkins服务器拉取cli,稳得一批:
RUN curl -L ${JENKINS_URL}/jnlpJars/jenkins-cli.jar -o /jenkins-cli/jenkins-cli.jar
再搞定pom.xml传递给Jenkins构建的需求
要把本地的pom.xml传给Jenkins服务器构建,有俩实用的方式,看你场景选:
方式1:Docker卷挂载(灵活,适合本地开发调试)
运行容器的时候,直接把本地的pom.xml挂载到容器里,然后在你的jenkins-cli-wrapper.sh里用cli命令提交构建就行:
- 运行容器的命令这么写:
docker run -v /你本地pom.xml的绝对路径:/jenkins-cli/pom.xml -v ~/.ssh/id_rsa:/ssh/id_rsa 你的镜像名 build -f /jenkins-cli/pom.xml -s - 对应的
jenkins-cli-wrapper.sh核心逻辑可以这么写:java -jar /jenkins-cli/jenkins-cli.jar -s ${JENKINS_URL} -i ${PRIVATE_KEY} "$@"
这样你运行时传的参数(比如build相关的)就能直接传给cli了。
方式2:镜像里预打包pom.xml(适合固定构建场景)
要是你的pom.xml是固定不变的,直接把它COPY进镜像里就行,省得每次挂载:
COPY 你的pom.xml路径 /jenkins-cli/pom.xml
之后在CMD或者wrapper脚本里直接用这个路径就行。
给你优化后的完整Dockerfile参考
结合上面的点,我给你改了下Dockerfile,你可以参考着来:
FROM ubuntu:14.04 # 这里保留你原来安装JDK、Maven的步骤,比如: # RUN apt-get update && apt-get install -y openjdk-8-jdk maven WORKDIR /jenkins-cli # 直接从Jenkins服务器下载cli,避免本地文件缺失的问题 RUN curl -L ${JENKINS_URL}/jnlpJars/jenkins-cli.jar -o /jenkins-cli/jenkins-cli.jar COPY jenkins-cli-wrapper.sh . # 要是需要固定pom.xml,就把下面这行注释打开 # COPY pom.xml . ENV JENKINS_URL "http://localhost:8080" ENV PRIVATE_KEY "/ssh/id_rsa" VOLUME /ssh ENTRYPOINT ["./jenkins-cli-wrapper.sh"] CMD ["help"]
最后提俩容易踩的小坑
- Jenkins地址要能访问:要是你Jenkins也跑在Docker里,别用
localhost:8080,得用宿主机的IP,或者把两个容器放在同一个Docker网络里,用容器名访问。 - 私钥权限要对:挂载的私钥权限必须是
600,不然jenkins-cli会报错,你可以在wrapper脚本里加一句chmod 600 ${PRIVATE_KEY},或者运行容器时加:ro(只读)权限:docker run -v ~/.ssh/id_rsa:/ssh/id_rsa:ro 你的镜像名
内容的提问来源于stack exchange,提问作者Hithesh
相关产品推荐
相关产品推荐

