【问题标题】:Remote debugging NodeJS in Docker with Visual Studio Code使用 Visual Studio Code 在 Docker 中远程调试 NodeJS
【发布时间】:2017-07-11 14:26:26
【问题描述】:

我想为我的应用使用官方的 node docker 镜像。但是我无法让远程调试器在主机上工作。我正在使用 Visual Studio Code 连接到远程调试器。

奇怪的是使用非官方镜像cusspvz/node远程调试器正常工作。

当我针对容器的 cusspvz/node 实例运行 docker log 时,我得到以下输出:

Debugger listening on [::]:5858

但是,当我针对容器的 node 实例运行 docker log 时,我得到:

Debugger listening on 127.0.0.1:5858

这让我相信调试器正在侦听错误的 IP 地址(应该是通配符而不是 localhost?)

我已经尝试过内置调试器以及 nodemon。不幸的是,我无法让 node-inspector 工作,因为它无法安装(似乎构建无论如何都失败了)。

这是我的 Dockerfile:

FROM node
WORKDIR /scraper
EXPOSE 5858
ENTRYPOINT ["/bin/bash", "-c", "if [ -z \"$REMOTE_DEBUGGING\" ]; then node --debug index.js; else node --debug-brk index.js; fi"]
COPY . /scraper
RUN npm install

我正在使用 docker-compose 启动容器,使用这个 YML 文件:

version: '2'

services:
 alt.nphotos.imagescraper:
  container_name: nscraper
  hostname: nscraper
  build:
   context: ./ALT.NPhotos.ImageScraper
   dockerfile: Dockerfile.debug
  environment:
  - REMOTE_DEBUGGING=1
  - AMQP_CONNECTIONSTRING=amqp://guest:guest@nqueue
  ports:
  - "5858:5858"

有什么想法吗? - TIA!

【问题讨论】:

  • 对您问题的完整附注:您应该在您的 FROM 指令中指定版本号标签。 FROM node:6.9.5 例如...否则,每次构建映像时,您都会得到最新/最新的节点版本。一开始听起来不错,直到不必要的升级破坏了您的代码
  • 谢谢@DerickBailey,我会记住的

标签: node.js debugging docker visual-studio-code


【解决方案1】:

默认情况下,node.js(及其后面的 v8)总是使用 127.0.0.1 作为调试器。我查看了cusspvz/node,但在任何地方都找不到它是如何公开调试器的。

以前很难更改此配置,但现在您可以将调试选项与显式主机一起使用:

node --debug=[::]:5858 test.js
Debugger listening on [::]:5858

【讨论】:

  • 嘿,成功了!实际上,我确实尝试了一些非常相似的方法——使用 debug-brk 并且我无法让它工作,这就是为什么我认为这种方法也不起作用的原因。这是我看到的,有什么想法吗? Debugger listening on [::]:5858 module.js:563 Debug.setBreakPoint(compiledWrapper, 0, 0); ^ illegal access 不过,既然你救了我——我会奖励赏金的 :) 非常感谢。
  • @AdrianLucaThomas,我对 debug-brk 有同样的错误。即使使用0.0.0.0 而不是[::]。如果它对您很重要,您仍然可以使用socat 来重定向端口。这是我以前使用的解决方法。
  • @AdrianLucaThomas,如果你将两者结合起来,它对你有用吗? node --debug=[::]:5858 --debug-brk test.js ?我可以通过这种方式打破第一行。
  • 是的!这工作:-) 非常感谢你。我用这个很痛苦..
猜你喜欢
  • 2018-11-04
  • 2021-10-23
  • 2018-01-20
  • 1970-01-01
  • 2019-04-02
  • 2021-01-09
  • 1970-01-01
  • 2017-11-06
  • 1970-01-01
相关资源
最近更新 更多