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
相关产品推荐
相关产品推荐

