新闻中心

如何使用VS Code调试在Docker容器中运行的应用程序

2025-12-05
浏览次数:
返回列表
答案:使用VS Code调试Docker容器内应用需配置支持调试的镜像并暴露端口,如Node.js添加--inspect=0.0.0.0:9229;启动容器时映射调试端口-p 9229:9229并挂载代码卷;在launch.json中设置attach模式,指定端口、地址及路径映射;最后启动容器并在VS Code中附加调试器即可命中断点。

如何使用vs code调试在docker容器中运行的应用程序

调试运行在 Docker 容器中的应用程序是开发中常见的需求。使用 VS Code 可以方便地实现断点调试,只要正确配置开发环境和容器运行参数。关键是让调试器能连接到容器内的进程,并确保代码同步和端口映射正常。

1. 准备支持调试的 Docker 镜像

你的镜像需要包含调试工具并暴露调试端口。以 Node.js 应用为例,修改 Dockerfile

  • 使用调试模式启动应用,例如 Node.js 添加 --inspect=0.0.0.0:9229
  • 确保监听地址为 0.0.0.0 而非 localhost,否则外部无法访问
  • 在 Dockerfile 中开放调试端口,如 EXPOSE 9229
示例 Dockerfile(Node.js):
CMD [ "node", "--inspect=0.0.0.0:9229", "server.js" ]

2. 启动容器并映射调试端口

运行容器时必须将调试端口从容器映射到宿主机:

  • 使用 -p 9229:9229 将容器的 9229 端口映射到本地
  • 确保容器内的代码与本地一致,可通过挂载卷实现热更新
  • 推荐使用 -v ${PWD}:/app 挂载源码目录
docker run -p 3000:3000 -p 9229:9229 -v ${PWD}:/app myapp

3. 配置 VS Code 的 launch.json

在项目根目录的 .vscode/launch.json 中添加调试配置:

Moshi Chat Moshi Chat

法国AI实验室Kyutai推出的端到端实时多模态AI语音模型,具备听、说、看的能力,不仅可以实时收听,还能进行自然对话。

Moshi Chat 160 查看详情 Moshi Chat
  • 设置类型为 node
  • 使用 attach 模式连接到远程进程
  • 指定本地代码路径与容器中路径的映射关系
示例配置:
{ "type": "node", "request": "attach", "name": "Attach to Docker", "port": 9229, "address": "localhost", "localRoot": "${workspaceFolder}", "remoteRoot": "/app" }

4. 开始调试

一切就绪后,按以下步骤操作:

  • 先启动容器,确认应用和调试端口已运行
  • 在 VS Code 中打开对应项目
  • 在代码中设置断点
  • 从运行和调试面板选择“Attach to Docker”并启动
  • 当请求触发对应代码时,断点将被命中

基本上就这些。只要容器能连上、端口映射正确、路径匹配,VS Code 就能顺利调试。不复杂但容易忽略细节。

以上就是如何使用VS Code调试在Docker容器中运行的应用程序的详细内容,更多请关注其它相关文章!


# 连接到  # 猫咪产品文案网站推广  # 拉面馆推广怎么做好营销  # 安徽抖音营销推广是什么  # 希尔顿的网站建设目标  # 提供福州seo案例  # 成华区短视频seo厂家  # 绍兴网站seo站内优化公司  # 宁波网站建设模板制作  # 海南seo排名哪家好些  # 开店要怎么营销推广  # 就能  # 调试器  # 端口映射  # 状态栏  # 一键  # docker  # 如何使用  # 镜像  # 应用程序  # 容器内  # 开发环境  # 工具  # 端口  # app  # node  # json  # node.js  # js  # vscode  # vs code 


相关栏目: 【 科技资讯46185 】 【 网络学院92790


相关推荐: 拼多多赚钱渠道_拼多多收益来源  在J*a中如何使用Stream.map转换元素_Stream映射操作解析  如何使用CaptainHook和Composer管理Git钩子_在提交前自动运行代码检查的Composer配置  如何在J*a中实现统一对象行为接口_项目大型化时的接口规范化  C++20的source_location是什么_C++在编译期获取源码位置信息用于日志和断言  Win10怎么设置静态IP地址 Win10手动配置IP地址步骤【指南】  Gmail邮箱申请注册直达_Gmail邮箱免费注册PC版官网入口2025  126邮箱网页版官方入口 126邮箱账号在线登录平台  印象笔记如何设提醒任务防漏执行_印象笔记设提醒任务防漏执行【任务提醒】  动漫岛观看全网网 动漫岛在线正版动漫入口  漫蛙manwa2最新登录网址_漫蛙manwa2手机网页版入口  Composer的 "conflict" 字段有什么用_如何声明不兼容的包以避免依赖冲突  汽水音乐网页版使用入口_汽水音乐电脑版播放指南  J*aScript中高效管理与清空动态列表:避免循环陷阱  《马克思佩恩3》早期版本曝光 UI设计曾多次调整!  Centos/Linux 系统下安装 composer 的完整步骤  Python:递归比较文件夹内容并找出特定类型文件的差异  React项目中导航栏Logo自适应布局:避免裁剪与布局溢出  Bing引擎入口最新2025 Bing搜索免费官方登录  C++如何实现一个装饰器模式_C++设计模式之动态地给对象添加额外职责  Win11怎么安装Linux子系统 Win11 WSL2安装Ubuntu及环境配置指南  夸克浏览器桌面版同步不了书签怎么处理 夸克浏览器跨设备同步异常解决方案  Tabulator表格日期时间排序问题及自定义解决方案  抓大鹅解压小游戏 抓大鹅摸鱼解压入口  163邮箱注册官网 免费申请163个人邮箱  如何使用J*aScript精确选择并批量修改特定父元素下子链接的样式  lar*el怎么安全地存储和获取配置文件中的敏感信息_lar*el敏感信息安全存储方法  age动漫网站入口 age动漫官网直接访问入口  自定义Bag-of-Words实现:处理带负号的词汇权重  在python-socketio事件处理器中安全访问Flask应用上下文  C++指针和引用有什么区别_C++内存管理核心概念深度解析  响应式图片在网页设计中的正确实现方法  押井守高度称赞《辐射4》:玩了八年都停不下来!  魅族20怎样在浏览器开无图省流_iPhone魅族20浏览器开无图省流【流量节省】  jQuery Mask 插件中实现电话号码固定前导零的教程  c++中的const_cast和reinterpret_cast怎么用_c++四种类型转换  J*a TimerTask中HashMap意外清空的深层原因与解决方案  vivo浏览器怎么扫描二维码 vivo浏览器内置扫一扫功能使用方法  Lar*el的路由模型绑定怎么用_Lar*el Route Model Binding简化控制器逻辑  台积电1.4nm工艺A14瞄准2028:10年来性能提升80%  使用Python高效删除Word宏并转换DOCM为DOCX格式  大麦的“候补”是什么意思 大麦候补购票规则【详解】  qq浏览器如何查看和导出已保存的密码 qq浏览器密码管理器数据备份教程  TikTok网页版直接登录 TikTok网页端官方平台入口  DLsite中文平台入口 DLsite官网内容在线查看  Pandas DataFrame 高效批量赋值:告别循环与笛卡尔积误区  抖音创作助手登录入口_抖音创作辅助工具官网直达  J*aScript类型检查_j*ascript代码规范  谷歌邮箱注册显示错误Gmail服务器异常与延迟处理  Basecamp怎样用留言钉固定重点_Basecamp用留言钉固定重点【重点标记】 

搜索