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

Mac环境下如何为Docker容器内运行的Gradle测试附加IntelliJ远程调试器

Mac环境下如何为Docker容器内运行的Gradle测试附加IntelliJ远程调试器

看起来你已经走了大部分正确的步骤,但卡在了容器和IntelliJ的连接环节上,我来帮你梳理几个关键的调整点:

1. 修正Gradle测试的Debug监听配置

你在build.gradle里把debugOptions的host设成了127.0.0.1,这是个常见的小坑——容器里的127.0.0.1只代表容器自身的回环地址,宿主机(你的Mac)是访问不到的。你需要把它改成0.0.0.0,让调试端口监听容器的所有网卡:

test {
    // 保留你的其他配置
    debugOptions {
        enabled = true
        host = '0.0.0.0' // 修改为这个值
        port = 4455
        server = true
        suspend = true
    }
}

如果是用命令行的--debug-jvm参数启动测试,默认监听5005端口且仅绑定127.0.0.1,要指定4455端口并开放给宿主机,需要额外加系统属性:

gradle clean build test --info --stacktrace -Dtest.debug.host=0.0.0.0 -Dtest.debug.port=4455 --debug-jvm

2. 确认Docker端口映射生效

你的docker run命令里已经配置了-p 127.0.0.1:4455:4455/tcp,这个配置是正确的,可以用下面的命令验证映射是否正常:

docker port my_test_container

如果输出显示4455/tcp -> 127.0.0.1:4455,说明端口映射没问题。

3. 配置IntelliJ远程调试器

打开IntelliJ,按以下步骤完成配置:

  • 点击顶部菜单栏的Run -> Edit Configurations
  • 点击左上角的+,选择Remote JVM Debug
  • 在配置页面:
    • 自定义一个名称(比如Docker Gradle Test Debug)
    • Host填localhost(因为端口已经映射到你的Mac本地)
    • Port填4455
    • Debugger mode选择Attach to remote JVM
    • Transport保持默认的Socket
  • 保存配置后,点击Debug按钮启动调试器

4. 常见问题排查

如果还是无法连接,试试这些排查步骤:

  • 检查容器内端口是否真的在监听:进入容器执行ss -tulpn | grep 4455,如果看不到监听记录,说明Gradle的debug配置未生效,重新检查build.gradle或命令行参数
  • 检查Mac端口是否被占用:在Mac终端执行lsof -i :4455,如果有其他程序占用该端口,换成别的端口(比如5005)重新配置
  • 临时关闭Mac防火墙:如果防火墙开启,可能会阻止IntelliJ访问4455端口,先临时关闭测试,确认问题后再添加对应的防火墙规则

备注:内容来源于stack exchange,提问作者coldcake71

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.23 09:24:30