[英]how to copy file from docker container over to Jenkins
我是构建和运行 docker 的新手。 所以我有一个 jenkins 管道设置,我有一个运行 python 文件的阶段。 我创建了一个 docker 来运行这个 python 文件。使用命令
sh "docker build -f create-abc-Dockerfile -t create-abc ."
sh "docker run create-abc python create-abc.py $name $abc ${abcDescription}"
getDetails = sh(returnStdout: true, script: "cat abc_details").trim()
其中 create-abc-Dockerfile 是我的 docker 文件, create-abc.py 是我的 python 文件。 create-abc-Dockerfile 包含
FROM python:3.8-alpine3.10
COPY create-abc.py .
RUN pip install requests
CMD ["python", "create-abc.py"]
我的 python 文件执行一些操作 - 在文件“xyz_details”中调用 API 和响应的某些部分
上面 Jenkins 管道中的一段代码运行正确,调用我执行 API 的 python 文件,但它无法访问 xyz_details 文件。 它说找不到文件。
我阅读了一些帖子并尝试了一些方法
docker cp <containerId>:/file/path/within/container /host/path/target
我的代码:
sh "docker cp create-abc:/xyz_details ."
其中 create-rfc 是我的容器(我在构建 docker 时使用上面提供的标签名称)但是我收到以下错误
+ docker cp create-abc:/xyz_details .
Error: No such container:path: create-abc:/xyz_details
我想要做的就是,运行 python 文件,将结果写入 xyz_details,在 Jenkins 管道中再次读取这个 xyz_details 文件。
您可以尝试使用卷。 您基本上需要运行 docker 容器并为目标路径(将生成文件的位置)附加一个卷。 然后您将可以从主机访问文件。
sh "docker run -v $PWD/myfiles:/dir/path/within/container create-abc python create-abc.py $name $abc ${abcDescription}"
sh "cp -r $PWD/myfiles /to/path"
这就是我通过管道将文件从 docker 容器复制到 jenkins 本地的方式
sh """
docker cp container_name:/app/test-reports ./test-reports
"""
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.