繁体   English   中英

如何将文件从 docker 容器复制到 Jenkins

[英]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 文件。 它说找不到文件。

我阅读了一些帖子并尝试了一些方法

  1. 我没有运行构建,而是在 docker 中将 CMD 更改为 RUN - 但我的 python 文件是参数化的,它传递动态值。 所以这个方法对我不起作用
  2. 试过这个方法
    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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM