新闻中心
在VS Code中调试在Docker容器中运行的Node.js应用
正确配置Docker和VS Code调试Node.js应用需四步:1. Dockerfile中使用--inspect=0.0.0.0:9229启动Node;2. docker-compose.yml映射9229端口;3. launch.json设置attach模式,匹配localRoot与remoteRoot路径;4. 启动容器后在VS Code中连接调试,确保端口开放与路径一致即可。

在 VS Code 中调试运行在 Docker 容器中的 Node.js 应用,关键在于正确配置容器的启动参数和 VS Code 的调试设置。只要确保 Node.js 进程以调试模式运行,并允许远程连接,就能顺利接入调试器。
1. 修改 Dockerfile 支持调试
确保你的 Dockerfile 使用支持调试的 Node.js 启动命令。通常使用 --inspect 或 --inspect-brk 参数。
示例:
CMD ["node", "--inspect=0.0.0.0:9229", "app.js"]
其中 --inspect=0.0.0.0:9229 表示监听所有网络接口的 9229 端口,允许外部调试器连接。使用 --inspect-brk 可让程序在第一行暂停,便于调试器附加。
2. 配置 docker-compose.yml 暴露调试端口
如果你使用 docker-compose,需要将调试端口映射到主机。
示例 docker-compose.yml:
Eclipse中创建Web M*en Project并部署到Tomcat中 中文WORD版
大家都知道,在进行J2EE项目的开发过程中,在调试阶段如果只是修改了页面是不需要重启应用服务器的,比如不需要重启Tomcat。只需要在浏览器中 进行页面刷新即可。其实之所以不用重启Tomcat等应用服务器,其根本原因是因为我们可以在应用服务器的配置文件中设置虚拟目录,这样就可以知道web 项目所在的目录,于是就可以省去打包、然后再重新发布到服务器的步骤。感兴趣的朋友可以过来看看
0
查看详情
- services:
- app:
- build: .
- ports:
- - "3000:3000"
- - "9229:9229"
这样主机就可以通过 localhost:9229 连接到容器内的调试器。
3. 配置 VS Code 的 launch.json
在项目根目录下的 .vscode/launch.json 中添加一个 Attach 配置:
- {
- "type": "node",
- "request": "attach",
- "name": "Attach to Docker",
- "address": "localhost",
- "port": 9229,
- "localRoot": "${workspaceFolder}",
- "remoteRoot": "/app"
- }
注意:remoteRoot 要与容器内应用路径一致(比如 Dockerfile 中 WORKDIR /app)。
4. 启动容器并连接调试
步骤如下:
- 运行
docker-compose up启动容器 - 确认日志中出现类似
Debugger listening on ws://0.0.0.0:9229/... - 在 VS Code 中选择 “Attach to Docker” 并启动调试
- 设置断点,查看变量,正常调试
基本上就这些。只要端口通、路径对、Node 启动参数正确,VS Code 就能顺利连接容器内进程。调试时常见问题多出在端口未暴
露或路径映射不一致,检查这两点基本都能解决。
以上就是在VS Code中调试在Docker容器中运行的Node.js应用的详细内容,更多请关注其它相关文章!
# 容器内
# 萤火云seo最新视频
# 舟山网站建设工作室
# 江苏放心seo
# 桂林网站建设b
# 青岛seo优化价格
# 网站内页seo优化
# 新乡楼盘营销推广
# 广东推广网站
# 如何提升网站关键词排名
# 宁夏关键词快速排名
# 大家都
# 是因为
# 如果你
# 应用程序
# node.js
# 不需要
# 就能
# 就可以
# 重启
# 调试器
# 常见问题
# vs code
# 端口
# app
# node
# json
# js
# vscode
# docker
相关栏目:
【
科技资讯46185 】
【
网络学院92790 】
相关推荐:
qq邮箱发邮件给国外发不出去_QQ邮箱国际邮件发送失败原因与解决
Golang如何优雅处理error_Golang error处理最佳实践总结
搜狗浏览器如何使用密码生成器创建强密码 搜狗浏览器内置密码安全工具
深入理解Go语言中的指针类型:以*string为例
J*a递归快速排序中静态变量导致数据累积的陷阱与解决方案
荒野行动PC版怎么注册_荒野行动PC版账号注册详细流程图文教程
曝R星经典之作开发图 设计简陋但信息密集!
修复二维数组索引越界异常:一维循环到二维坐标的正确映射
Spyder启动失败:字体文件权限拒绝错误解决方案
Golang如何处理RPC请求负载均衡_Golang RPC请求负载均衡策略与实践
怎样使用“本地安全策略”提升Windows安全性_Secpol.msc配置指南【高手】
C++的std::mdspan是什么_C++23中用于操作多维数组的非拥有视图
J*aScript生成器_j*ascript异步迭代
CSS条件样式无法按设备触发怎么排查_media条件语句正确设置解决触发问题
机构:以往存储涨价周期小米利润率实际上有所改善 能转嫁给消费者等
J*aScript实现动态背景色下的文本与按钮颜色自适应调整
Win10怎么制作U盘启动盘 Win10系统安装U盘制作教程【详解】
使用Python高效删除Word宏并转换DOCM为DOCX格式
Lar*el表单中优雅地处理“返回”按钮以规避验证:最佳实践指南
解决Tabulator日期时间排序问题的专业指南
如何使用spryker/configurable-bundles-products-resource-relationship模块解决复杂产品捆绑关系难题
TikTok搜索不到用户发布内容怎么办 TikTok用户内容搜索优化方法
windows10怎么查看本机ip_windows10命令提示符ipconfig使用
优化大型XML文件解析:基于Python流式处理的内存高效方案
腾讯QQ邮箱官方网站_QQ邮箱网页版在线登录
mysql通配符支持数字匹配吗_mysql通配符能否用于数字匹配的解析
cad怎么合并重叠的线段_cad清理重复重叠线条的操作方法
qq游戏免费畅玩入口_qq游戏电脑版快速启动
Go语言中高效处理x-www-form-urlencoded表单数据
Django表单验证失败时保留用户输入数据的最佳实践
Python大型XML文件高效流式解析教程
深入理解J*a链表中的IPosition接口与使用
J*aScript map 迭代中检测空数组元素的有效方法
css滚动动画效果怎么实现_使用Animate.css滚动触发动画类
向日葵客户端怎么进行远程CentOS控制_向日葵客户端远程CentOS控制操作教程
优化LangChain文档加载与ChromaDB集成:解决多文档处理与分块问题
Mac怎么锁定备忘录_Mac备忘录加密设置教程
mcjs网页版在线存档 mcjs云存档登录入口
期待已久:小米17 Ultra、小米首款NAS本月登场
动漫岛观看全网网 动漫岛在线正版动漫入口
抖音网页版企业服务中心登录入口_抖音网页版企业登录平台
J*aScript井字棋(Tic-Tac-Toe)核心交互逻辑实现教程
Golang如何实现Web文件静态资源服务器_Golang静态资源服务器开发与实践
网易大神怎么保存别人动态的图片_网易大神动态图片保存方法
葱吃多了会怎样 葱吃多了会伤胃吗
Python中高效且防溢出的双曲正弦计算:基于对数空间的优化策略
TikTok国际版网页端快速入口 TikTok全球版短视频浏览教程
为什么我的微信朋友圈看不到别人的更新_微信朋友圈更新显示异常解决方法
顺丰快件物流信息 官方网站查询入口
深入理解Google Cloud Datastore查询:祖先路径与数据一致性


2025-12-03
浏览次数:次
返回列表