2017-02-21 119 views
5

我想为我的应用使用官方node泊坞窗图像。但是,我无法让远程调试器在主机上工作。我正在使用Visual Studio代码连接到远程调试器。使用Visual Studio远程调试Docker中的NodeJS代码

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

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

Debugger listening on [::]:5858

然而,当我运行docker log对容器的node例子中,我得到:

Debugger listening on 127.0.0.1:5858

这使我相信调试器正在监听错误的IP a地址(应该是通配符而不是本地主机?)

我试过内置调试器以及nodemon。不幸的是,我无法让节点检查器工作,因为它无法安装(看起来构建失败了)。

这里是我的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 

我开始与码头工人,撰写的容器,使用这种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:[email protected] 
    ports: 
    - "5858:5858" 

任何想法? - TIA!

+0

完整侧面说明你的问题:你应该指定一个版本号标记你的' FROM'指令。例如'FROM node:6.9.5' ...否则,每次构建图像​​时,都会得到最新的/最新的节点版本。这听起来不错,直到不需要的升级破坏你的代码 –

+0

谢谢@DerickBailey我会记住这一点 –

+0

你试过这个:http://stackoverflow.com/questions/12440169/how-do-you-debug- a-node-js-server-running-with-chrome-webkit-as-the-the-remote-debug –

回答

4

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

它曾经是很难改变这个配置,但现在你可以使用调试选项和显式的主机:

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

嘿,这工作!我实际上尝试了一些非常相似的东西 - 用debug-brk,但是我无法正常工作,这就是为什么我认为这种方法不起作用。这是我看到的,有什么想法? '在[::]上侦听的调试器:5858 module.js:563 Debug.setBreakPoint(compiledWrapper,0,0); ^ 非法访问# 但是,正如你救了我 - 我会奖励赏金:)非常感谢。 –

+0

@AdrianLucaThomas,我对debug-brk有同样的错误。即使使用'0.0.0.0'代替'[::]''。如果它对你很重要,你仍然可以使用'socat'来重定向端口。这是我以前使用的解决方法。 –

+0

@AdrianLucaThomas,如果将两者结合起来,它是否适合你? 'node --debug = [::]:5858 --debug-brk test.js'?我能够以这种方式在第一线上突破。 –

相关问题