我需要创建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)
答案 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脚本交互。