我在Docker容器中有一个简单的Python脚本:
- 调用外部API
- 从API
返回许可文件我希望能够将返回的许可证文件保存到docker容器内的目录中。
这就是我所做的:
r = requests.post("http://api/endpoint", headers=headers, data=data, auth=("", "")
f = open('test.lic', 'w+')
f.write(r.content)
f.close()
我的理解是,如果文件尚不存在,则会创建test.lic
文件,或者打开现有的test.lic
文件,并将请求对象的内容写入test.lic
。但这不起作用。没有文件保存到Docker容器内的目录中。如果我从python shell运行这些行就可以了,所以我猜它与Docker容器内部有关。
答案 0 :(得分:3)
可能是文件已保存,但它位于容器的工作目录中。
在容器中运行二进制文件的默认工作目录是根目录(
Algorithm user system total real Hash 0.015000 0.000000 0.015000 ( 0.013002) OP's code 26.053000 0.016000 26.069000 ( 26.161283) Include 9.219000 0.000000 9.219000 ( 9.244161) Set 0.016000 0.000000 0.016000 ( 0.013001)
),但开发人员可以使用Dockerfile/
命令设置不同的默认值。
因此文件可能会以容器的根目录WORKDIR
结束。
您可以在脚本中添加/
print
(如果您能够看到输出...您可能需要使用os.getcwd()
命令)来验证这一点。无论哪种方式,该文件都可能位于docker logs
返回的位置。