node.js – 使用Visual Studio代码在Docker中远程调试NodeJS

我想为我的应用程序使用官方节点docker镜像.但是我无法让远程调试器在主机上运行.我正在使用Visual Studio Code连接到远程调试器.

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

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

监听[::]的调试器:5858

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

调试器监听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!

最佳答案
默认情况下,node.js(以及后面的v8)始终使用127.0.0.1作为调试器.我看过cusspvz / node,我无法在任何地方找到它如何暴露调试器.

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

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

转载注明原文:node.js – 使用Visual Studio代码在Docker中远程调试NodeJS - 代码日志