我想学习如何使用Docker部署应用程序,并且正在使用这个简单的python程序,该程序将一些数据写入当前工作目录中的csv文件中。我可以在本地计算机上的当前工作目录中看到output.csv文件,但是在运行docker镜像时遇到了麻烦。

阅读了关于stackoverflow的各种文章和文章之后,使用“-v”挂载本地目录路径似乎是实现此目的的方法,但是我无法获得正确的命令。
我尝试在本地计算机上创建一个名为“output_docker”的新目录(我也用此路径替换了程序中的get.cwd()选项),并将其与-v选项一起使用。

 docker container run -v "/Users/Desktop/output_docker" docker_image_name

Python代码(scraper.py)
import pandas as pd
import os

data = [['tom', 10], ['nick', 15], ['juli', 14]]
df = pd.DataFrame(data, columns = ['Name', 'Age'])

dirpath = os.getcwd()
print("dirpath = ", dirpath, "\n")

output_path = os.path.join(dirpath,'output.csv')
print(output_path,"\n")

df.to_csv(output_path)

DOCKERFILE
FROM python:3
ADD scraper.py /
RUN pip install pandas
CMD ["python3","./scraper.py"]

在本地机器上输出
$python3 scraper.py
   Name  Age
0   tom   10
1  nick   15
2  juli   14

dirpath =  /Users/Prathusha/Desktop/topos_docker

/Users/Prathusha/Desktop/topos_docker/output.csv

运行docker镜像时的输出
$docker build -t ex_scraper .
$docker run ex_scraper
   Name  Age
0   tom   10
1  nick   15
2  juli   14
dirpath =  /

/output.csv

我知道“output.csv”文件将位于docker容器的子目录中,但是当docker镜像在另一台机器上运行时,我希望它在当前工作目录(或桌面)中可见。
如果有人能指出我要去哪里错,将不胜感激。

最佳答案

您可以绑定(bind)主机目录,建议您使用WORKDIR并将ADD替换为COPY-

DOCKERFILE

FROM python:3
WORKDIR /mydata
COPY scraper.py ./
RUN pip install pandas
CMD ["python3","./scraper.py"]

运行 -
docker run -v ${PWD}:/data ex_scraper

现在,您应该能够在主机上的当前目录中看到CSV。

关于python-3.x - Docker-将python输出写入当前工作目录中的csv文件,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/56287088/

10-13 08:13
查看更多