You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Gradle任务间触发IDEA调试以调试Docker容器内应用

解决Docker容器中应用的远程调试问题(配合gradle-docker-compose-plugin)

核心思路

要在composeUp完成后、dockerComponentTest启动前附加远程调试到容器内的应用,需要两步核心配置:

  1. 让容器内的应用以调试模式启动并暴露调试端口
  2. 在IDEA中配置自动化的任务执行链,确保调试会话在测试启动前建立

步骤1:配置Docker容器开启调试模式

修改你的docker-compose.yml,为应用服务添加调试端口映射和JVM启动参数:

services:
  your-app-service-name:
    build: .
    ports:
      - "8080:8080" # 应用业务端口,根据实际情况调整
      - "5005:5005" # 远程调试端口,固定映射到本地5005
    environment:
      # JVM调试参数:server=y表示作为调试服务端,suspend=n表示启动后不等待调试器连接
      # 如果需要应用启动后等待调试器连接再继续,把suspend=n改成suspend=y
      - JAVA_OPTS=-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=*:5005

如果你的应用不是Java,对应调整语言的调试参数(比如Node.js用--inspect=0.0.0.0:9229,并映射9229端口)。


步骤2:在IDEA中配置自动化调试任务链

方式一:创建Compound运行配置(推荐)

这个方式可以一键执行「启动容器→连接调试→运行测试」的完整流程:

  1. 打开Run/Debug Configurations(右上角运行按钮旁的下拉菜单 → Edit Configurations...)
  2. 创建远程调试配置:
    • 点击左上角+ → 选择Remote JVM Debug
    • 配置名称(比如App Container Debug),设置Port为5005,Host为localhost,其余保持默认
  3. 创建Gradle任务配置(如果没有的话):
    • 点击+ → 选择Gradle
    • 分别创建两个配置:一个执行composeUp,一个执行dockerComponentTest
  4. 创建Compound配置:
    • 点击+ → 选择Compound
    • 配置名称(比如Debug App in Container)
    • 点击Add,按顺序添加:composeUp Gradle任务 → App Container Debug远程调试 → dockerComponentTest Gradle任务
    • 勾选Execute in order选项,确保任务按顺序执行
  5. 保存配置后,点击调试按钮启动这个Compound配置即可:
    • 先自动执行composeUp启动所有容器
    • 自动建立远程调试会话连接到容器内的应用
    • 最后自动执行dockerComponentTest,此时你可以在应用代码中设置断点,调试容器内的应用逻辑

方式二:手动分步执行(适合临时调试)

如果不需要完全自动化,也可以手动分步操作:

  1. 在IDEA的Gradle面板中执行composeUp任务,等待容器启动完成
  2. 启动之前创建的远程调试会话,连接到容器应用
  3. 执行dockerComponentTest任务,此时应用断点会触发

注意事项

  • 如果设置了suspend=y(应用启动等待调试器连接),composeUp会卡在应用启动阶段,直到调试会话建立后才会继续,这种场景适合需要调试应用初始化逻辑的情况
  • 确保本地的调试端口(比如5005)没有被其他进程占用
  • 测试完成后,记得执行composeDown清理容器环境

内容的提问来源于stack exchange,提问作者RomanMitasov

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.30 16:55:16