VSCode调试Docker内运行的Rails应用断点不生效问题求助
可按以下优先级排查问题:
- 路径映射错误(最高概率)
你当前launch.json中的remoteWorkspaceRoot填写的是本地项目路径${workspaceRoot},但容器内的项目根目录路径和本地并不一致,需要修改为容器内实际的项目根路径。
举个例子:如果你的docker-compose.yml中是把本地代码挂载到容器的/app目录下,就把对应配置修改为:
"remoteWorkspaceRoot": "/app"
同时注意remotePort的值要改为数字类型,不要用字符串:
"remotePort": 1234
- Puma多进程模式冲突
rdebug-ide默认仅能捕获主进程的断点,Rails开发环境如果开启了Puma集群模式(多worker),请求会分发到子进程处理,导致断点无法触发。
修改项目下config/puma.rb文件,强制开发环境使用单进程模式:
# 开发环境关闭多worker if ENV["RAILS_ENV"] == "development" workers 0 threads 1, 1 # 同时关闭多线程避免冲突 end
- 确认Docker端口映射配置
检查docker-compose.yml中对应的服务配置,是否已暴露调试端口1234:
services: some-app: # 其他配置省略 ports: - "5000:5000" - "1234:1234" # 必须加调试端口的映射
修改完配置后重启容器、重新attach调试即可生效。
内容的提问来源于stack exchange,提问作者Pascal
相关产品推荐
相关产品推荐

