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

如何解决docker-compose服务远程调试5005端口连接被拒绝的问题

Docker 容器Java远程调试连接失败修复方案

核心问题:Dockerfile CMD 指令配置错误

你当前的CMD写法存在两处致命问题,会导致容器启动失败、调试端口根本未开启:

  • 数组格式的CMD要求每个启动参数独立作为数组元素,你将所有参数拼接在同一个字符串中,容器无法识别为合法的执行命令
  • 命令开头误写为-java,正确的Java启动命令前缀为java,无需添加短横线
    修正后的graphql-service Dockerfile 如下:
FROM graphql-service

# 移除冗余的重复EXPOSE声明
EXPOSE 8080 5005

ADD app/target/service-*-exec.jar /app/spring-boot-service.jar

# 拆分参数为独立数组项,修正启动命令
CMD ["java", "-agentlib:jdwp=transport=dt_socket,address=*:5005,server=y,suspend=n", "-jar", "/app/spring-boot-service.jar"]

附加排查项

如果修复后仍无法连接,按以下步骤排查:

  • 检查本地5005端口是否被其他进程占用,执行命令:lsof -i:5005。如果存在占用,可修改docker-compose.yml中的端口映射为"5006:5005",调试时连接本地5006端口即可。
  • 确认容器正常运行:执行docker ps查看graphql-service容器状态为Up。
  • 进入容器内部确认调试端口已监听:执行docker exec -it graphql-service bash进入容器,再执行netstat -tulpn | grep 5005,能看到端口处于监听状态即为正常。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 00:15:02