gpt4 book ai didi

python-2.7 - python脚本的Docker容器/卷中的相对路径

转载 作者:行者123 更新时间:2023-12-02 18:09:42 27 4
gpt4 key购买 nike

我是 Docker 的新手,但在使用 Windows 10 的 docker 工具箱对一些现有的 python 代码进行 Dokcerizing 方面取得了成功。

目前我有这个设置:

picture of working python code in Docker container

这是通过 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(最多)。

Picture of container setup that i would like

所以我想知道如何引用其他容器/卷,以便我可以访问主体 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 文档,但似乎无法理解如何使其工作,任何帮助将不胜感激。

最佳答案

是的,您在考虑使用卷方面走在正确的轨道上。我会把它分成三部分:

  • 您在一个容器中运行的 Python 代码
  • 在 python 容器和一个或多个其他容器之间共享的卷
  • “数据复制”容器,每天将最新数据复制到共享卷。

  • 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 应用程序共享,这正是您想要的。

    希望有帮助。

    关于python-2.7 - python脚本的Docker容器/卷中的相对路径,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45862213/

    27 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com