将文件从 Python 脚本保存到 Docker 容器
Save file from Python script to Docker Container
我有一个简单的 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
.但是,这是行不通的。没有文件被保存到 Docker 容器内的我的目录中。如果我 运行 来自 python shell 的这些行它有效,所以我猜它与 Docker 容器内部有关。
可能是文件正在保存,但它在容器的工作目录中。
docker docs 说:
The default working directory for running binaries within a container is the root directory (/
), but the developer can set a different default with the Dockerfile WORKDIR
command.
因此文件可能最终位于容器的根目录 /
中。
您可以将 print
或 os.getcwd()
添加到您的脚本中(如果您能够看到输出...您可能需要使用 docker logs
命令)以验证这一点。无论哪种方式,文件都可能位于 os.getcwd()
.
返回的位置
在我的例子中,文件被保存到不同的容器中。如果 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.lic
文件不存在,这将创建一个文件,或者打开现有的test.lic
文件,并将请求对象的内容写入test.lic
.但是,这是行不通的。没有文件被保存到 Docker 容器内的我的目录中。如果我 运行 来自 python shell 的这些行它有效,所以我猜它与 Docker 容器内部有关。
可能是文件正在保存,但它在容器的工作目录中。
docker docs 说:
The default working directory for running binaries within a container is the root directory (
/
), but the developer can set a different default with the DockerfileWORKDIR
command.
因此文件可能最终位于容器的根目录 /
中。
您可以将 print
或 os.getcwd()
添加到您的脚本中(如果您能够看到输出...您可能需要使用 docker logs
命令)以验证这一点。无论哪种方式,文件都可能位于 os.getcwd()
.
在我的例子中,文件被保存到不同的容器中。如果 docker-compose.
中有多个容器,请检查它