Docker容器中Spring Boot服务远程调试异常排查求助
Docker容器中Spring Boot服务远程调试异常排查
问题背景
我有一个部署在Docker容器中的Spring Boot服务,配置远程调试后,IntelliJ调试器已成功连接(提示:Connected to the target VM, address: 'localhost:5005', transport: 'socket'),但访问API地址http://localhost:8080/test/amtest时出现错误。
我的Docker Compose配置如下:
version: '3.3' services: #Retaining mongo configuration even though we dont have repository mongo: image: mongo:3.6 ports: - "27017:27017" environment: MONGO_INITDB_ROOT_USERNAME: root MONGO_INITDB_ROOT_PASSWORD: root rabbitmq: image: rabbitmq:management ports: - "5672:5672" - "5671:5671" - "15672:15672" environment: RABBITMQ_DEFAULT_USER: root RABBITMQ_DEFAULT_PASS: root csig-generation: build: . container_name: "docker-app" ports: - '8080:8080' - '5005:5005' environment: - JAVA_TOOL_OPTIONS=-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=5005
排查步骤
检查应用启动状态
查看容器日志,确认Spring Boot服务是否完全启动,重点排查依赖连接异常:docker logs docker-app关注是否有MongoDB/RabbitMQ连接超时、服务启动失败等错误日志。
修正调试参数绑定地址
容器内Java调试参数需绑定到0.0.0.0,否则可能引发内部网络请求异常。修改环境变量:environment: - JAVA_TOOL_OPTIONS=-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=0.0.0.0:5005验证API路径与端口监听
- 核对代码中
@RequestMapping/@GetMapping注解的路径是否与/test/amtest完全匹配; - 检查容器内8080端口是否正常监听:
docker exec docker-app netstat -tulpn | grep 8080
- 核对代码中
确认依赖服务可用性
- 访问
http://localhost:15672,用配置的账号密码登录RabbitMQ管理界面,确认服务正常; - 测试MongoDB连接:
mongosh "mongodb://root:root@localhost:27017/admin"
- 访问
检查端口占用情况
确认本地8080端口未被其他进程占用:# Windows netstat -ano | findstr :8080 # Linux/macOS lsof -i :8080若端口被占用,修改Docker Compose端口映射(如
8081:8080),重新部署后访问对应地址。重置IntelliJ调试配置
检查调试配置中是否启用了Force early class loading等特殊选项,恢复默认配置后重新连接调试器。
内容的提问来源于stack exchange,提问作者Pranav MS
相关产品推荐
相关产品推荐

