llms.txt: machine-readable documentation index. Markdown version of this page is also available.

IntelliJ IDEA 2026.3 Help

在运行 Tomcat 的容器内部署和调试 Java Web 应用程序

您可以使用 Docker 容器来运行应用服务器,以部署和调试您的 Java Web 应用程序。 这是测试和调试网络应用程序的好方法,可在各种版本的应用服务器上重现各种环境。

本教程介绍了如何使用 Docker Compose 文件来运行部署到 Tomcat 应用服务器的 Web 应用程序的 Docker 容器,并进行调试所需的所有配置:公开调试器端口,将包含 WAR 文件的输出目录绑定挂载到容器中的 Tomcat,并打开调试器套接字。

克隆示例项目

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

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

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

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

克隆包含示例项目的仓库

构建 WAR 工件

  1. 在主菜单中,进入 构建 | 构建工件…

  2. 请选择 tomcat_docker_debug:war exploded 并构建它。

构建 WAR 工件

生成的构建工件出现在项目根目录下 target/ 。

使用 Docker Compose 运行应用程序

  1. 打开 docker-compose.yml 。

  2. 点击 docker compose up ,位于 服务 旁边的标尺。

此操作会创建一个 Docker Compose 运行配置,将应用程序作为单独的 Docker Compose 服务运行,并定义在 docker-compose.yml 中。

图像

本教程使用了兼容 Jakarta EE 9.1 的图像 tomcat:10.0-jdk17。 如果您的应用程序使用 Jakarta EE 10,请在 Tomcat 10.1 上运行。 对于 Java EE 8,请使用 Tomcat 9 及更早版本。

端口

要从您的主机访问该应用程序,Docker Compose 将容器中的端口 8080 暴露为主机上的端口 8888。 它还会将容器中的端口 5005 映射为主机上的端口 5005 以供调试器使用。

卷

而不是将 WAR 工件复制到容器中,Docker Compose 将应用程序输出目录 ./target 绑定挂载到容器中的 Tomcat 目录: /usr/local/tomcat/webapps 。

环境变量

要附加调试器,Docker Compose 将 JAVA_OPTS 环境变量设置为以下内容:

-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=*:5005
命令

Docker Compose 会重写 Tomcat 镜像声明的默认命令,并将其设置为 catalina.sh run。

检查应用程序是否正在运行

  1. 打开容器日志,并确保其以 Tomcat 已启动的消息结束。

  2. 请在浏览器中打开以下 URL: http://localhost:8888/Tomcat_docker_debug-1.0-SNAPSHOT/api/hello-world。 它应该返回一个页面 您好,世界!

您好,世界! 来自 Java web 应用程序的响应

附加调试器

  1. 运行名为 远程 JVM 调试 的 remote_tomcat_debug 配置,该配置远程附加调试器。

  2. 打开 src/main/java/com/example/tomcat_docker_debug/HelloResource.java 并在 hello() 方法中带 return "Hello, World!"; 的行上设置断点

    为端点设置断点
  3. 请刷新或再次打开 REST 端点: http://localhost:8888/Tomcat_docker_debug-1.0-SNAPSHOT/api/hello-world。 这次,它应该在所述方法内触发断点。

2026年 11月 3日