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

> For the complete documentation index, see [llms.txt](https://www.jetbrains.com/zh-cn/help/idea/llms.txt).

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

> **Note:**
> 在开始之前，请 [安装并运行 Docker](docker.html#install_docker)、 [启用 Docker 插件](docker.html#enable_docker_plugin)，并 [在 IntelliJ IDEA 中连接到 Docker 守护进程](docker.html#connect_to_docker)。

有关 Spring 相关功能，请参阅 [在 IntelliJ IDEA 中启用 Spring 支持](spring-support.html#check_required_spring_plugins)。

Procedure: 克隆示例项目

该应用程序的源代码托管在 GitHub 上，网址为 [https://github.com/IdeaUJetBrains/SpringBootDockerDemoDebug](https://github.com/IdeaUJetBrains/SpringBootDockerDemoDebug)。

1. 在主菜单中，前往  `文件 | 新建 | 从版本控制创建项目…` 。

2. 指定仓库的 URL，然后点击   克隆  。

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

![克隆示例 Spring Boot 项目用于 Docker](https://resources.jetbrains.com/help/img/idea/2026.3/docker_spring_boot_clone.png)

Procedure: 准备 Spring Boot 运行配置

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

> **Note:**
> 如果您没有   演示应用程序  配置，请打开  `DemoApplication.java` 文件并点击 ![运行图标](https://resources.jetbrains.com/help/img/idea/2026.3/app.actions.execute.svg)在装订区域。 应用程序在没有适当的 Java 运行时和所需的数据库的情况下将无法实际运行，但这将为您自动创建   演示应用程序   配置。

1. 在主菜单中，前往  `运行 | 编辑配置` 。

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

![添加新的 Docker Compose 目标](https://resources.jetbrains.com/help/img/idea/2026.3/docker_spring_boot_demoapp_new_target.png)

3. 选择  `docker-compose.yml`  文件，然后选择  `java`  服务，并点击   下一步  。

![添加 Docker Compose 运行目标并包含 Java 服务](https://resources.jetbrains.com/help/img/idea/2026.3/docker_spring_boot_add_java_run_target.png)

4. 在 IntelliJ IDEA 构建目标镜像并检测到 Java home 路径后，点击   下一步  。

5. 请检查检测到的 Java home 路径和版本，然后点击   创建  。

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

![使用新的运行目标的 DemoApplication](https://resources.jetbrains.com/help/img/idea/2026.3/docker_spring_boot_demoapp_with_target.png)

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

Procedure: 准备数据库运行配置

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

1. 在   运行/调试配置  对话框中，点击   添加新配置   ![添加新配置按钮](https://resources.jetbrains.com/help/img/idea/2026.3/app.expui.general.add.svg)并选择   Docker Compose  。

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

![数据库服务的 Docker Compose 配置](https://resources.jetbrains.com/help/img/idea/2026.3/docker_spring_boot_compose_db_config.png)

3. 应用更改到新配置并选择   演示应用程序  配置。

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

![DemoApplication 运行配置包含 Docker Compose 作为 Launch 前的任务](https://resources.jetbrains.com/help/img/idea/2026.3/docker_spring_boot_add_before_launch_task.png)

5. 在您应用更改后，运行   演示应用程序  配置。

Procedure: 运行应用程序

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

![成功运行 Spring Boot 应用程序后的控制台输出](https://resources.jetbrains.com/help/img/idea/2026.3/docker_spring_boot_run_console_output.png)

1. 请注意 Docker 转发到运行应用程序的容器中 8080 端口的随机本地端口号。 在上述示例中，它是 54123。

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

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

![执行 GET 请求](https://resources.jetbrains.com/help/img/idea/2026.3/docker_spring_boot_get_request.png)

Procedure: 连接到数据库

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

* 打开 [Database](database-tool-window.html)工具窗口，并使用以下设置添加 MySQL 数据源：

主持人
: `本地主机`

端口
: `13306`

用户
: `root`

密码
: `root`

数据库
: `DOCKERDB`

![连接 MySQL](https://resources.jetbrains.com/help/img/idea/2026.3/docker_spring_boot_mysql_connection.png)

Procedure: 调试应用程序

1. 在调试模式下运行   演示应用程序  。 例如，在选择运行配置后，点击主工具栏中的   调试  按钮 ![](https://resources.jetbrains.com/help/img/idea/2026.3/app.expui.run.debug.svg)。

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

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

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

![Spring Boot 应用程序在断点处暂停](https://resources.jetbrains.com/help/img/idea/2026.3/docker_spring_boot_debug_suspended.png)

