我想为我的应用程序使用官方 node
docker 镜像。但是我无法让远程调试器在主机上工作。我正在使用 Visual Studio Code 连接到远程调试器。
奇怪的是使用非官方图像 cusspvz/node
远程调试器工作正常。
当我针对容器的 cusspvz/node
实例运行 docker log
时,我得到以下输出:
监听 [::]:5858
然而,当我针对容器的 node
实例运行 docker log
时,我得到:
监听 127.0.0.1:5858 的调试器
这让我相信调试器正在监听错误的 IP 地址(应该是通配符而不是本地主机?)
我试过内置调试器和 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 Code 在 Docker 中远程调试 NodeJS,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42376231/