关于node.js:使用Visual Studio Code在Docker中远程调试NodeJS

Remote debugging NodeJS in Docker with Visual Studio Code

我想为我的应用程序使用官方node泊坞窗图像。 但是,我无法使远程调试器在主机上运行。 我正在使用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:

1
2
3
4
5
6
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

我使用以下YML文件从docker-compose启动容器:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
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!


默认情况下,node.js(及其后的v8)始终使用127.0.0.1作为调试器。 我看过cusspvz/node,但找不到任何地方像这样暴露调试器。

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

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