将文件作为参数传递给docker run
我有一个python3命令行脚本,它使用argparse读取参数并给出结果。当我从终端运行时,它工作正常,如下所示:将文件作为参数传递给docker run,docker,dockerfile,Docker,Dockerfile,我有一个python3命令行脚本,它使用argparse读取参数并给出结果。当我从终端运行时,它工作正常,如下所示: my_cli --input input.csv --output output.csv --number 8 我成功地将其对接并尝试以以下方式运行: docker run --mount type=bind,source=/tmp/path,target=/app my_cli_container --input input.csv --output output.csv
my_cli --input input.csv --output output.csv --number 8
我成功地将其对接并尝试以以下方式运行:
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
我做错了什么?
为什么容器不能看到输入文件?
我是否需要做一些额外的事情来读取这个输入文件和数字,然后将输出写入文件
谢谢。这将取决于
input.csv
在容器内外的位置,以及容器中的工作目录
您正在通过/tmp/path
传递到/app
,但它位于容器外部的文件夹/tmp/path
中的input.csv
如果没有,那么容器将无法访问该文件
如果是,那么容器中的工作目录是否为/app
?否则,您需要传入--input/app/input.csv
还请注意,容器(out.csv)写入的任何文件都将作为容器中的用户写入(可能是根用户),因此用户可能无法读取Docker容器在独立的文件系统中运行。如果您的进程的目标是读写主机文件,那么在Docker之外运行它会容易得多,如果您需要额外的库依赖项,可以在Python虚拟环境中运行。