从Docker访问主机文件,无需复制和生成输出

q3qa4bjr  于 2023-06-29  发布在  Docker
关注(0)|答案(1)|浏览(84)

我有一个Python项目,在我的主机上具有以下目录结构:

Host Machine:
├── project/
│   ├── src/
│   │   ├── file1.py
│   │   ├── file2.py
│   │   └── ...
│   └── docs/
│       ├── conf.py
│       ├── index.rst
│       ├── index.html (Output)
│       └── ...
└── Dockerfile

我想为这个项目设置一个Docker环境,其中Python文件位于Docker机器内的/src文件夹中。但是,我不想将整个/project文件夹复制到Docker机器中。此外,我在主机上的/docs目录中有特定的文件(conf.pyindex.rst)和一个index.html文件(用作输出)。
Docker机器的目录结构应该如下所示:

Docker Machine:
└── code/
    ├── file1.py
    ├── file2.py
    └── ...

有没有一种方法可以利用绑定挂载或任何其他Docker实用程序直接从Docker容器访问主机上/src/docs目录中的文件?我想在Docker环境中执行命令,例如生成index.html文件,但将输出保存在主机上的相应位置。
具体来说,我想为Docker容器中/code目录中的Python文件生成index.html文件,并将此输出文件保存在主机上的project/docs/目录中。
如果您有任何关于如何使用绑定挂载或其他Docker实用程序实现此设置的指导或建议,我们将不胜感激。谢谢你!

bzzcjhmw

bzzcjhmw1#

您可以使用docker run cli的-v--volume参数将本地目录和文件挂载到容器。
在python项目目录中运行以下命令。

docker run --rm -ti --volume $(pwd):/project --workdir /project --entrypoint bash python:3

说明:

  1. --volume $(pwd):/project允许您挂载本地文件系统,其中包括容器的/project路径中的src和docs文件夹
  2. --workdir /project允许您指定容器内的工作目录。在这个例子中,我将其命名为project at / path。
  3. --entrypoint bash,这样您就可以使用容器中挂载的文件系统访问shell。这将允许您运行通常在终端上运行的命令来构建/运行Python项目。
  4. -ti获取交互式TTY。
  5. --rm在退出时删除容器。这是可选的。
  6. python:3这将获取最新版本的python 3。您可以通过替换3为项目选择Python版本。例如python:3.6或python:2.7

相关问题