通过 Docker 解释器部署脚本时,Pycharm 中未检测到卷绑定

通过 Docker 解释器部署脚本时,Pycharm 中未检测到卷绑定

我设置了卷绑定,将几个不同的路径映射到我的 Docker 容器。我在 Pycharm Pro 中设置了 Docker 插件,并将容器的解释器设置为我的 Python 解释器。我可以使用 docker 解释器部署我的 python 脚本,没有任何麻烦(就 docker 镜像上创建的包和依赖项而言)。

但是,在部署脚本并尝试通过卷绑定访问存储在本地计算机上的文件时,它找不到它们。当我在 pycharm 中打开交互式调试 shell 并运行 os.path.exist 时,它会对卷绑定的父路径(在容器内)返回 True,但对应该从本地计算机映射到那里的任何文件或目录返回 False。

这很奇怪,因为卷绑定处于活动状态,我已经通过多种方式验证了这一点:

  1. 我可以看到 Pycharm 的 Docker 工具窗口正确列出了绑定

  2. 从终端检查时,我可以看到映射文件出现在容器中。

  3. 我还可以在我的容器中打开一个终端并启动 python shell 并运行 os.path.exist,这也会返回 True,确认目录已被映射并位于我在卷绑定中指定的路径下。

为什么通过 Pycharm 的 Docker 解释器部署 python 脚本时无法访问我的卷绑定 - 即使脚本运行良好?

系统信息:

Pycharm版本:Pycharm Professional 2019.1.2

Docker 版本:2.0.0.3

本地机器操作系统:macOS 10.13.4 High Sierra

Docker 操作系统:Ubuntu 16.04

答案1

事实证明,当我部署脚本时,Pycharm 的 Docker 插件不会附加到现有的正在运行的容器(尽管它有一个 Docker 工具窗口,其中列出了正在运行的容器并显示它们的卷绑定,就好像这些容器用于部署一样,这有点误导)。相反,每次部署脚本时,它都会从映像启动一个新容器。因此,如果您想在每次启动脚本时将卷绑定到这些临时容器实例,则需要导航到运行/编辑配置并在“Docker 容器设置”下为每个脚本设置卷绑定。我不知道这是用于部署的卷绑定,而不是在正在运行的容器上的 Docker 工具窗口中设置的卷绑定。

相关内容