教程:将 Docker Compose 作为远程解释器
Docker 是一个用于构建、共享和运行容器化应用程序的工具。 RubyMine 提供 与 Docker 的集成 ,并允许您在项目中执行所有必要的操作——从构建镜像到在运行的容器内执行命令。 此外,RubyMine 使您能够将运行中的 Docker 容器用作远程解释器。 这意味着您可以直接从 IDE 中在隔离环境中 运行、 调试和 测试您的应用程序。
在本教程中,我们将展示如何使用远程 Docker Compose 解释器调试 示例 Rails 应用程序。 此应用程序由一个 Web 前端和一个数据库后端组成。 我们将配置该应用程序以使用两个独立的服务运行,分配 web 服务一个远程解释器,并尝试调试功能。
先决条件
在本教程中,我们将使用安装了 RubyMine 的 Mac 和 macOS。 此外,应满足以下先决条件以完成所有步骤:
验证是否已安装并运行 Docker。
确保 Docker 插件 已启用。
使用 Compose 构建并运行应用程序
在本章中,我们将在两个独立的服务中运行我们的应用程序: web 用于前端, 数据库 用于数据库。 为此,我们需要在 database.yml 文件中重新配置数据库设置。 然后,我们可以运行 docker-compose up。 执行以下步骤:
转到 config/database.yml 文件并注释 Ctrl+/ 以下代码:
development: <<: *default adapter: sqlite3 database: db/development.sqlite3 ... test: <<: *default adapter: sqlite3 database: db/test.sqlite3取消注释 Ctrl+/ 配置使用 Postgres 数据库的 开发 环境的部分:
development: <<: *default adapter: postgresql encoding: unicode host: db username: postgres password: database: sample_rails_app_db ... test: <<: *default adapter: postgresql encoding: unicode host: db username: postgres password: database: sample_rails_app_db_test打开 docker-compose.yml 文件。 请注意,以下命令用于 web 服务以保持其运行:
web: # command: tail -f /dev/null我们需要 web 服务运行,因为 RubyMine 使用
docker-compose exec命令来分析 Ruby 环境并 将 Docker Compose 添加为远程解释器。 如果 web 服务未运行,RubyMine 会使用docker-compose run自动运行它。 如有必要,您可以 更改此行为并使用其他方式分析 Ruby 环境。单击
并等待 Docker Compose 拉取/构建镜像并启动容器。

或者,您可以在 RubyMine 终端中运行
docker-compose up命令。
将 Compose 配置为远程解释器
将 Docker Compose 配置为远程解释器包括两个部分:
(可选) 指定 IDE 如何与 Docker 交互以分析 Ruby 环境。
配置远程解释器
打开 设置 对话框 Ctrl+Alt+S ,转到 语言与框架 | Ruby 解释器 页面。
点击
并选择 远程解释器或版本管理器。

在弹出的对话框中,选择 Docker Compose 并指定以下选项:

服务器 :此选项指定用于运行容器的 Docker 服务器。
配置文件 :保留 docker-compose.yml 文件。
服务 :选择 web服务。
Ruby 或版本管理器路径(R) :保留默认 ruby 值以自动检测 Ruby 解释器的路径。 您还可以手动指定解释器的路径或 版本管理器可执行文件。
在 Ruby 解释器 页面中选择添加的解释器并单击 确定。

等待 RubyMine 完成索引过程并创建辅助 Docker 镜像和容器。

(可选)配置 Ruby Docker 集成
为了在 Docker 内使用 Ruby 解释器,IDE 通过在容器内运行特定命令(例如 which ruby、 gem env 和 rbconfig )来分析 Ruby 环境。 您可以选择是否在目标容器(docker-compose exec )中执行这些命令,创建新环境(docker-compose run ),或使用专用服务容器来完成此目的。
打开 设置 对话框 Ctrl+Alt+S 并转到 构建、执行、部署 | Docker | Ruby 设置 页面。
指定 RubyMine 如何通过在容器内运行特定命令来分析 Ruby 环境:
docker-compose exec如果项目已启动,否则docker-compose rundocker-compose exec,如果需要,使用docker-compose up运行项目docker exec在解释器容器中,如果需要,创建解释器容器docker-compose run
配置 gem 同步
RubyMine 会定期启动 gem 同步以收集有关安装在 Docker Compose 解释器中的 gems 的信息并确定可用功能。 例如,RubyMine 会检查是否安装了 rubocop gem,然后再运行 Rupocop 检查。
打开 设置 对话框 Ctrl+Alt+S 并转到 构建、执行、部署 | Docker | Ruby 设置 页面。
选择以下选项之一,将有关 Ruby 解释器和已安装 gems 的信息复制到 RubyMine 的本地缓存中:
如果项目已启动,请使用正在运行的容器;否则,请使用新容器 :选择此选项以在运行中的容器内运行 gem 同步。 如果没有运行中的容器,RubyMine 将创建并启动一个新容器,然后在该容器内执行一次 gem 同步。
始终使用新容器 :选择此选项以在每次 RubyMine 执行 gem 同步时创建并启动一个新容器。
创建数据库并运行迁移
在调试我们的 Rails 应用程序之前,我们需要创建数据库并运行迁移。
按 Ctrl 两次并输入 db:create。 在下拉菜单中选择
rake db:create并按下 Enter。 保持被调用的 执行 'db:create' 对话框中的默认设置,然后点击 确定。最后,为了迁移数据库,按 Ctrl 两次,输入 db:migrate ,在下拉菜单中选择
rake db:migrate并按 Enter。 在弹出的对话框中单击 确定。
运行应用程序
在调试之前,让我们运行我们的应用程序以查看其工作情况:
在工具栏上选择 sample_rails_app 配置并单击
Shift+F10。

打开浏览器,输入 0.0.0.0:3000 地址并按 Enter 以查看我们的工作应用程序。
要停止应用程序,请单击工具栏上的
Ctrl+F2。
Compose 运行/调试配置设置
在运行调试会话之前,让我们检查与 Docker Compose 相关的启动设置:
按 Ctrl+Shift+A 并开始输入 编辑配置。 选择 编辑配置 并按 Enter。

在弹出的 运行/调试配置 对话框中,选择 开发 配置,位于 Rails 节点下。

在 docker-compose 组中,您可以看到以下用于运行/调试 Rails 应用程序的选项:
docker-compose exec - RubyMine 在已运行的容器中运行命令。
docker-compose up - RubyMine 启动一个服务,用作远程解释器,并带有附加设置(例如,暴露调试器所需的附加端口)。
docker-compose run - RubyMine 在新容器中运行命令。
保留默认 docker-compose up 并单击 确定。




