python-3.x - Docker - 将 python 输出写入当前工作目录中的 csv 文件
问题描述
我想学习如何使用 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)
码头工人文件
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 映像在另一台机器上运行时,我希望它在当前工作目录(或桌面)中可见。如果有人能指出我哪里出错了,我将不胜感激。
解决方案
您可以绑定您的主机目录,我建议使用WORKDIR
&ADD
替换COPY
-
码头工人文件
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 - 由于“无法将序列乘以‘numpy.float64’类型的非整数”错误,无法拟合数据
- javascript - 悬停时闪烁的下拉菜单
- javascript - 循环遍历 div 以定义父级高度
- regex - 负前瞻正则表达式之间没有空格
- javascript - Laravel Dusk - 执行 javascript 脚本并等待 promise 被解析以返回值
- android - Intent.ACTION_CALL 如何添加 `,` 符号逗号
- python - 多类图像分类中如何获取权重图
- javascript - 为什么在修改参数时添加默认参数值会改变行为?
- python - 从 numpy 数组以 HTML 格式渲染音频
- php - 如何在 varchar 列中使用 Laravel whereYear?