首页 > 解决方案 > 将文件作为参数传递给 docker run

问题描述

我有一个 python3 命令行脚本,它使用 argparse 来读取参数并给出结果。当我从终端运行时它工作正常:

my_cli --input input.csv --output output.csv --number 8

我成功地将其 dockerized 并尝试运行为:

docker run --mount type=bind,source=/tmp/path,target=/app my_cli_container --input input.csv --output output.csv --number 8

我得到: FileNotFoundError:[Errno 2] 没有这样的文件或目录:input.csv

我在这里做错了什么?为什么容器看不到输入文件?我是否需要做一些额外的事情来读取这个输入文件和数字,然后将输出写入文件?

谢谢你。

标签: dockerdockerfile

解决方案


这将取决于input.csv容器内部和外部的位置以及容器中的工作 DIR。

您正在通过但位于容器外部的文件夹/tmp/path中如果没有,则容器将无法访问该文件/appinput.csv/tmp/path

如果是,那么容器内的工作目录是/app什么?否则你需要通过--input /app/input.csv

另请注意,由容器(out.csv)写入的任何文件都将以容器中的用户(可能是 root)的身份写入,因此您的用户可能无法读取


推荐阅读