将文件从Python脚本保存到Docker容器

将文件从Python脚本保存到Docker容器,python,docker,docker-compose,Python,Docker,Docker Compose,我有一个简单的Python脚本,在Docker容器中,它: -调用外部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.l

我有一个简单的Python脚本,在Docker容器中,它:

-调用外部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
文件,并将请求对象的内容写入
test.lic
。然而,这是行不通的。没有文件保存到Docker容器内的my目录中。如果我从pythonshell运行这些行,它会工作,所以我猜这与Docker容器内部有关。

可能是文件正在保存,但它在容器的工作目录中

他们说:

在容器中运行二进制文件的默认工作目录是根目录(
/
),但是开发人员可以使用Dockerfile
WORKDIR
命令设置不同的默认目录

因此,文件可能会在容器的根目录
/
中结束


您可以将
os.getcwd()
print
添加到脚本中(如果您能够看到输出…您可能需要使用
docker logs
命令)来验证这一点。无论哪种方式,文件都可能位于
os.getcwd()

返回的位置。您如何测试文件是否正在保存?如何调用docker run命令?python脚本与哪个用户一起运行?这些信息可以在您的Dockerfile中。或者运行
docker diff
,查看是否有任何内容已写入文件系统(但在卷上不起作用)。@samstav您的回答为我指明了正确的方向。所以文件被保存了,但正如您所指出的,它被保存在我的容器的根目录中。我在Dockerfile中添加了WORKDIR和Volume,现在它正按照我的预期工作。