Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/docker/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将文件作为参数传递给docker run_Docker_Dockerfile - Fatal编程技术网

将文件作为参数传递给docker run

将文件作为参数传递给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

我有一个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 --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虚拟环境中运行。