Python 在workdir中保存docker输出文件
我是Python 在workdir中保存docker输出文件,python,docker,Python,Docker,我是docker的新手 我的Dockerfile FROM python:3 WORKDIR /app COPY . /app RUN pip install numpy RUN pip install pandas CMD ["python", "app.py"] 在app.py中我有一行 pd.DataFrame(predictions, columns=['predictions']).to_csv('output.csv') 我构建并运行映像,这没关系,但我无法将此数据帧保存在我的工
docker的新手
我的Dockerfile
FROM python:3
WORKDIR /app
COPY . /app
RUN pip install numpy
RUN pip install pandas
CMD ["python", "app.py"]
在app.py中我有一行
pd.DataFrame(predictions, columns=['predictions']).to_csv('output.csv')
我构建并运行映像,这没关系,但我无法将此数据帧保存在我的工作目录中。如何更改
Dockerfile
,以便我可以这样做?将output.csv
从容器中取出到主机上的最佳方法可能是使用卷。卷是可以在主机和容器之间共享的存储路径,非常类似于虚拟机的共享文件夹
就你而言:
docker run --rm -v $(pwd)/volume:/app your_image
然后,您应该在工作目录中的
/volume
下找到容器的/app
路径中的所有内容 你到底想要实现什么?您需要主机上的输出吗?或者根本没有在/app
中创建output.csv
?我需要主机上的输出。文件已创建。看起来,/app
不是空的,从到Dockerfile中的复制
指令。以这种方式装入卷时,/app
的原始内容将被隐藏。在这种情况下,使用任何其他路径而不是/app
装载卷都可以。@Proyag我可以在Dockerfile中删除COPY
或更改WORKDIR
?我同意,@Proyag@Edward,您可以更改Python代码以将CSV保存到其他地方,例如/home/your_user/output.CSV
。然后您可以将卷定义更改为-v$(pwd)/volume:/home/your_user
。我使用docker run--rm-v$(pwd)/volume:/e/测试我的_映像
它可以工作,但输出不保存。如果我在app.py
`中更改为_csv('/e/test/output.csv'),我会得到错误没有这样的文件或目录