将文件作为Docker python应用程序的命令行参数

时间:2017-02-07 13:06:16

标签: python docker

我需要创建dockerized python应用程序,它将从命令行读取文件。

我不知道它是否可行,但我运行此应用的规范是:

docker run -t myimage file.csv

目前我的docker文件看起来像这样:

FROM python:3
ADD test.py /
ENTRYPOINT ["python", "test.py"]
CMD ["test.py"]

test.py是: import sys

def main(args):
    for a in args:
        print(a)
        with open(a, 'r') as f:
            for l in f:
                print(l)


if __name__ == '__main__':
    main(sys.argv)

1 个答案:

答案 0 :(得分:1)

除非您将文件作为卷映射到容器中,否则docker容器将不会看到该文件。该语法如下所示:

docker run -t -v `pwd`/file.csv:/file.csv myimage file.csv

将./file.csv映射到容器中作为/file.csv,然后容器中的脚本将运行:

python test.py file.csv

您还可以使用docker cli将输入管道输入到容器中,替换stdin。在CLI中,您需要包含-i以使其具有交互性,然后使用正常的shell重定向,如:

docker run -it myimage <file.csv

如果你这样做,你需要更新你的python脚本以从stdin而不是文件中读取,如果你使用stdin进行其他事情,你就不能选择与python脚本交互。