2017-02-21 118 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'?我能夠以這種方式在第一線上突破。 –

相關問題