IntelliJ IDEA 2025.1 Help

使用 Docker Compose 运行和调试 Spring Boot 应用程序

您可以使用 IntelliJ IDEA 在多个 Docker 容器下通过 Docker Compose 运行和调试一个 Spring Boot 应用程序。 本教程介绍如何在同一个虚拟网络中的容器内运行两个 Docker Compose 服务:一个简单的 Spring Boot 应用程序和一个 MySQL 数据库。 该应用程序可以接收向数据库添加条目的 GET 请求。 本教程还描述了如何设置断点并调试您的应用程序。

有关 Spring 相关功能,请参阅 在 IntelliJ IDEA 中启用 Spring 支持

克隆示例项目

该应用程序的源代码托管在 GitHub 上 https://github.com/IdeaUJetBrains/SpringBootDockerDemoDebug

  1. 在主菜单中,前往 文件(F) | 新建(N) | 来自版本控制的项目…

  2. 请指定存储库的 URL,然后点击 克隆

  3. 如有必要,请同意在新窗口中打开克隆的项目。

克隆示例 Spring Boot 项目用于 Docker

准备 Spring Boot 运行配置

项目应该具有 演示应用程序 配置,以运行 Spring Boot 应用程序。 默认情况下,它在本地运行, 但您需要在 Docker Compose java 服务的容器上运行它。

  1. 在主菜单中,前往 运行(U) | 编辑配置(E)

  2. 运行/调试配置 对话框中,选择 演示应用程序 配置,展开 运行于 列表,并在 创建新目标 下选择 Docker Compose

    添加新的 Docker Compose 目标
  3. 选择 docker-compose.yml 文件,然后选择 java 服务,并点击 下一个

    添加 Docker Compose 运行目标并包含 Java 服务
  4. 在 IntelliJ IDEA 构建目标镜像并检测到 Java home 路径后,点击 下一个

  5. 请检查检测到的 Java home 路径和版本,然后点击 创建(C)

  6. 确保选择新的 java 服务运行目标,并将更改应用到 演示应用程序 配置。

    使用新的运行目标的 DemoApplication

您可以从 Dockerfile 或镜像配置运行目标,但在本教程中,我们使用 Docker Compose 在同一网络中运行两个服务,以便一个服务中的 Java 应用程序可以访问另一个服务中的数据库。

准备数据库运行配置

您需要运行应用程序的数据库,使用定义在相同 docker-compose.yml 文件中的 db 服务。 为其创建一个运行配置,然后配置在 Spring Boot 应用程序之前运行。

  1. 运行/调试配置 对话框中,点击 添加新配置 添加新配置按钮 并选择 Docker Compose

  2. 为此配置指定一个像 DatabaseService 这样的描述性名称,指定 docker-compose.yml 文件,然后添加 db 服务。

    数据库服务的 Docker Compose 配置
  3. 应用更改到新配置并选择 演示应用程序 配置。

  4. 演示应用程序 配置中,点击 修改选项(M) ,选择 添加启动前任务 ,然后点击 运行另一个配置 ,并添加新的 Docker Compose 配置以在主应用程序之前运行数据库服务。

    DemoApplication 运行配置包含 Docker Compose 作为 Launch 前的任务
  5. 在您应用更改后,运行 演示应用程序 配置。

运行应用程序

当您运行 演示应用程序 配置时,IntelliJ IDEA 将首先启动 db Docker Compose 服务并确保数据库状态良好。 然后它将启动 java 服务作为 Spring Boot 应用程序的运行目标。 最后,它将使用运行目标中的 Java 运行时来运行 Spring Boot 应用程序。 如果一切正常,您将看到以下输出:

成功运行 Spring Boot 应用程序后的控制台输出
  1. 请注意 Docker 转发到运行应用程序的容器中 8080 端口的随机本地端口号。 在上述示例中,它是 54123。

  2. 您可以访问应用程序并列出存储在数据库中的实体,网址为 http://localhost:54123/entitybus (请将端口号替换为 Docker 为您分配的实际端口号)。

  3. 要向数据库添加随机实体,请向 http://localhost:54123/entitybus/post 发送 GET 请求。

执行 GET 请求

连接到数据库

如果您愿意,您可以连接到正在运行的数据库 jdbc:mysql://0.0.0.0:13306/DOCKERDB

  • 打开 Database工具窗口,并使用以下设置添加 MySQL 数据源:

    主机

    localhost

    端口

    13306

    用户

    root

    密码

    root

    数据库

    DOCKERDB

连接 MySQL

调试应用程序

  1. 在调试模式下运行 演示应用程序。 例如,在选择运行配置后,点击主工具栏中的 调试 按钮

  2. 打开 EntitybusController.java 文件并在 postEntity() 方法内部的某处设置一个断点。 例如,在第 27 行。

  3. 请在浏览器中打开 http://localhost:54123/entitybus/post (或 Docker 分配给您的端口)。

调试器应在断点处暂停执行,您可以检查当前状态,例如变量值和帧。

Spring Boot 应用程序在断点处暂停
最后修改日期: 2025年 4月 24日