【问题标题】:Reading an HDF file outside a Docker container from a Python script inside a container从容器内的 Python 脚本读取 Docker 容器外的 HDF 文件
【发布时间】:2020-05-03 19:03:02
【问题描述】:

我有一个 Python 脚本 python_script.py,它在我的本地机器上读取一个 HDF5 文件 hdf_file.h5。文件的目录路径是

  • 文件夹 1
    • 文件夹2
      • python_script.py
      • hdf_file.h5

我有以下示例代码:

from pandas import read_hdf
df = read_hdf('hdf_file.h5')

当我在本地机器上运行这段代码时,它运行良好。

但是,我需要将 Python 脚本放在 Docker 容器中,将 HDF 文件保留在容器之外,并让代码读取文件。我希望容器的目录路径如下:

  • 文件夹 1
    • 文件夹2
      • hdf_file.h5
    • 泊坞窗文件夹
      • python_script.py
      • requirements.txt
      • Dockerfile

我使用以下 Dockerfile:

FROM python:3
WORKDIR /project
COPY ./requirements.txt /project/requirements.txt
RUN pip install -r requirements.txt
COPY . /project
CMD [ "python", "python_script.py" ]

我是 Docker 新手,在弄清楚如何在容器内获取 Python 脚本以读取容器外的文件时遇到了很多麻烦。我要使用哪些命令或更改代码才能做到这一点?

【问题讨论】:

  • 为什么需要使用 Docker,而不是 Python 虚拟环境?
  • David,此代码是最终产品的原型,将部署在其他系统上。其他人看不到源代码,所以我使用 Docker 来隐藏代码。我承认这可能不是最好的方法并且对其他人持开放态度,但我认为这可能会奏效。

标签: python docker hdf5


【解决方案1】:

看来您需要使用 docker 卷 (https://docs.docker.com/storage/volumes/)。

尝试以下方法:

docker run -v path/where/lives/hdf5/:path/to/your/project/folder/your_image your_docker_image:your_tag

: 之前的第一部分是指主机,之后是容器。

希望对你有帮助!

【讨论】:

  • 感谢您的回复。我有一个关于路径的问题。我打开命令提示符并 cd 进入目录 folder1/docker-folder,我的 Dockerfile 和 python 脚本所在的位置。我构建了一个名为 my_image 的 Docker 映像并运行命令 docker run -v /Users/folder1/docker-folder:/project my_image 我收到错误 python: can't open file 'python_script.py': [Errno 2] No这样的文件或目录你能告诉我我做错了什么吗?谢谢。
  • 我认为问题与您的 docker 文件中的 CMD 命令有关。此命令在卷分配之前执行,因此,您的容器无法打开脚本,因为它还没有“在”容器中。尝试改用入口点脚本。 (docker run -entrypoint ./entrypoint.sh -v /Users/folder1/docker-folder:/project my_image )。 entrypoint.sh 是一个 bash 脚本,它只运行你的 python 命令。
  • 我意识到我在最初的问题中犯了一个错误,所以我对我的原始帖子做了一个小的编辑。在没有对我的 Python 代码或 Dockerfile 进行任何更改的情况下,我输入并运行了以下命令: docker run -v /Users/folder1/folder2/:/project/my_image my-image 使用此命令,Python 脚本开始运行,但是我收到错误 FileNotFoundError: File hdf_file.h5 does not exist 我在使用卷的方式上犯了一些错误吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-12-06
  • 1970-01-01
  • 1970-01-01
  • 2021-10-10
  • 1970-01-01
相关资源
最近更新 更多