我是Docker的新手,但在Windows 10的docker工具箱中成功完成了一些现有python代码的确认。
目前我有此设置:
这是通过Dockerfile完成的:
FROM python:2.7.13
WORKDIR /root
COPY ./requirements.txt /root/requirements.txt
RUN pip install -r requirements.txt
COPY . /root
CMD ["python", "main.py"]
我所有的代码都放在带有一堆CSV和.pkl文件的容器中。事实是CSV和.pkl文件每天都会更改,因此在阅读后,我认为我可以将这些文件拆分为一个卷,甚至是一个单独的容器,我可以每天修改和上传这些文件而无需更改主要Python脚本的1.4G版本大小,我的上传速度为40kbps(最好)。
所以我想知道我将如何引用其他容器/卷,以便可以在主体Python代码中访问CSV和/ pkl文件?目前,所有内容都位于同一目录中,所以没有问题,我只需调用.csv / .pkl名称即可使用
#open the local .csv file
data = pd.read_csv(csv_select)
#open the local .pkl file
pickled_list = pickle.load(open(can_cat+".pkl","rb"))
我如何引用上述代码从单独的容器中打开csv / pkl文件?
我已经阅读了很多stackoverflow帖子和docker文档,但是似乎无法理解如何使其工作,任何帮助将不胜感激。
是的,在考虑使用卷方面,您处在正确的轨道上。我将其分为三部分:
1.共享卷
使用Docker创建卷很容易。特别好的是可以创建一个具有特定名称的卷:
docker volume create data-volume
因此,这里我们创建了data-volume
命名卷。然后,您可以使用以下命令将其安装到任何容器上:
docker run --rm -v data-volume:/data my-container-image
因此,这里我们从my-container-image Docker镜像运行一个容器,并将该data-volume
卷安装/data
在该容器中。
您的python代码可以轻松地从该目录中读取所需的文件。例如,/data
或者您可以根据需要更改安装点。
2.将更改的数据复制到卷中
下一步将是创建一个简单的应用程序,该应用程序可以将最新更改复制到该目录中。再说一次,此应用程序将最新数据复制到/data
其自己的文件系统中。本质上,我们需要一个能够执行以下操作的应用程序:
cp $TODAYS_DATA.csv $TODAYS_DATA.pkl /data
我们可以在容器中运行此应用程序,还可以确保容器已data-volume
安装在以下位置data
:
docker run --rm data-volume:/data my-data-copying-app
这个容器可能非常简单,例如:
FROM alpine:latest
COPY ./todaysdata /todaysdata
然后可以使用以下命令运行它:
docker run --rm data-volume:/data my-data-copy-image "/bin/sh -c cp -r /todaysdata/* /data/"
因此,基本上,您只需使用命令运行容器即可将今天的数据复制到中/data
。因为/data
实际上是一个卷,所以最新数据将立即与您的python应用共享,这正是您想要的。
希望能有所帮助。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句