我需要创建将从命令行读取文件的dockerized python应用程序。
我不知道是否可能,但是我运行该应用程序的规范是:
docker run -t myimage file.csv
目前,我的docker文件如下所示:
FROM python:3
ADD test.py /
ENTRYPOINT ["python", "test.py"]
CMD ["test.py"]
其中test.py是:
导入系统
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将输入通过管道传递到容器中,以替换stdin。在CLI中,您需要包括
-i
以使其具有交互性,然后使用常规的shell重定向,例如:docker run -it myimage <file.csv
如果这样做,则需要更新python脚本以从stdin读取而不是从文件读取,并且如果您将stdin用于其他用途,则无法选择与python脚本交互。
关于python - 文件作为Docker Python应用程序的命令行参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42090663/