使用 Docker 配置解释器
简介
PyCharm 与 Docker 的集成允许您在部署于 Docker 容器中的各种配置的开发环境中运行您的应用程序。
前提
确保满足以下前提条件:
已经按照 Docker 文档中描述安装 Docker。
您可以在各种平台上安装 Docker,但这里我们将使用 Windows 安装。
请注意,您可能希望在不同平台上重复此教程;然后使用适用于 macOS 和 Linux (Ubuntu 及其他发行版的相关说明也可用)的 Docker 安装。
您的网络连接稳定,因此 PyCharm 可以下载并运行
busybox:latest
(BusyBox Docker 官方镜像的最新版本)。 一旦成功使用 Docker 配置了解释器,您就可以离线。在开始使用 Docker 之前,请确保已启用 Docker 插件。 该插件随 PyCharm 一起捆绑,并默认激活。 如果插件未激活,请按照 安装插件 中描述的方式,在 插件 设置页面  Ctrl+Alt+S 启用它。
在 设置 对话框(Ctrl+Alt+S )中,选择 ,并在 使用以下方式连接到 Docker 守护进程 下选择 Docker for <您的操作系统>。 例如,如果您使用的是 macOS,请选择 Docker for Mac。 在 Docker 设置 中查看更多详细信息。
请注意,您无法向基于 Docker 的项目解释器中安装任何 Python 包。
准备示例
创建一个 Python 项目QuadraticEquation
, 添加 Solver.py 文件,并复制粘贴以下代码:
将 Docker 配置为远程解释器
现在,让我们定义一个基于 Docker 的远程解释器。
请执行以下操作之一:
点击 Python Interpreter 选择器 并选择 添加新的解释器。
按 Ctrl+Alt+S 以打开 设置 并转到 。 点击可用解释器列表旁的 添加解释器 链接。
点击 Python Interpreter 选择器 并选择 解释器设置。 点击可用解释器列表旁的 添加解释器 链接。
请选择 在 Docker 上。
在 Docker 服务器 下拉菜单中选择一个现有的 Docker 配置。
或者,单击
并执行以下步骤以创建新的 Docker 配置:
- 创建 Docker 配置
点击
以添加 Docker 配置,并指定如何连接到 Docker 守护进程。
连接设置取决于您的 Docker 版本和操作系统。 如需更多信息,请参阅 Docker connection settings。
连接成功 消息应出现在对话框的底部。
有关在 Windows 或 macOS 上使用 Docker 时将本地路径映射到运行 Docker 守护进程的虚拟机的更多信息,请参阅 Windows 和 macOS 主机的虚拟机路径映射。 您将无法对映射本地路径之外的目录使用卷和绑定挂载。
此表在 Linux 主机上不可用,在该主机上 Docker 本地运行,您可以将任何目录挂载到容器。
以下操作取决于您是要从 Docker 注册表中拉取预构建的镜像,还是从 Dockerfile 本地构建镜像。
- 拉取 Docker 镜像
选择 拉取或使用现有镜像 并在 镜像标记 字段中指定所需镜像的标签。
- 构建 Docker 镜像
选择 构建 并在必要时更改 Dockerfile 和 上下文文件夹 字段中的默认值。
如果需要,展开 可选 部分并指定以下内容:
镜像标记
为生成的镜像指定一个可选名称和标签。
这对将来参考图像会有所帮助。 如果您将该字段留空,图像将只有一个随机唯一标识符。
构建选项
设置支持的
docker build
选项。例如,您可以使用
--label
选项为构建的镜像指定元数据。构建实参
指定构建时变量的值,这些变量在构建过程中可以像常规环境变量一样访问,但不会在中间或最终镜像中持久存在。
这与使用
--build-args
选项和docker build
命令相似。这些变量必须通过
ARG
指令在 Dockerfile 中定义。 例如,您可以为即将使用的基础镜像版本定义一个变量:ARG PY_VERSION=latest FROM python:$PY_VERSION在这种情况下,
PY_VERSION
变量将默认为latest
,并且 Dockerfile 将生成一个具有最新可用 Python 版本的镜像,除非您将其重新定义为构建时参数。 如果设置了PY_VERSION=3.10
,Docker 将拉取python:3.10
,运行一个带有 Python 3.10 版本的容器。将
PY_VERSION
参数重新定义类似于设置以下命令行选项:--build-arg PY_VERSION=3.10您可以提供用空格分隔的多个参数。
等待 PyCharm 连接到 Docker 守护进程并完成容器自省。
接下来,选择一个解释器以在 Docker 容器中使用。 您可以选择容器中已配置的任何 virtualenv 或 conda 环境,或者选择系统解释器。
点击 OK。
配置的远程解释器已添加到列表中。
在 Docker 容器中运行您的应用程序
在 main
子句旁边的边栏中,点击 图标,并选择 运行 'solver':

脚本在 运行 工具窗口中启动。 为脚本提供值:

切换到 服务 工具窗口以预览容器详细信息。 展开 容器 节点并选择正在运行的容器。

请注意, 日志 选项卡包含相同的执行结果。
在 Docker 容器中调试您的应用程序
接下来,让我们调试应用程序。 为此,让我们通过点击行号在计算 d
的行上设置一个断点。 然后点击 边栏中的图标,并选择 。

调试器也在 Docker 容器中运行:

然而,现在此容器具有不同的 id,因此名称也不同。
摘要
让我们总结一下在 PyCharm 的帮助下完成的工作:
我们创建了一个项目并添加了一个 Python 脚本。
我们配置了远程解释器。
我们在 Docker 容器中运行并调试了脚本。
最后,我们启动了 Docker 工具窗口,并在终端中查看了所有可见的详细信息。
有关更多信息,请参阅以下视频教程: