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

我需要创builddockerized 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) 

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

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

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

 python test.py file.csv 

您也可以使用docker cli将inputinput到容器中,replacestdin。 在CLI中,需要包含-i以使其交互,然后使用正常的shellredirect,如:

 docker run -it myimage <file.csv 

如果你这样做,你需要更新你的python脚本来从stdin而不是文件中读取,如果你使用stdin来处理其他事情,你将不会有与python脚本交互的选项。