2017-02-21 1 views
5

Ich würde gerne das offizielle Docker-Bild node für meine App verwenden. Allerdings kann ich den Remote-Debugger nicht auf dem Host-Computer arbeiten. Ich verwende Visual Studio Code, um eine Verbindung zum Remote-Debugger herzustellen.Remotedebugging NodeJS in Docker mit Visual Studio-Code

Die seltsame Sache ist die Verwendung eines inoffiziellen Bildes cusspvz/node der Remote-Debugger funktioniert ordnungsgemäß.

Als ich docker log gegen die cusspvz/node Instanz des Behälters betreibe ich folgende Ausgabe:

Debugger listening on [::]:5858

Jedoch, wenn ich docker log gegen die node Instanz des Behälters laufen erhalte ich:

Debugger listening on 127.0.0.1:5858

Das führt mich zu der Annahme, dass der Debugger auf die falsche IP a zuhört dresse (sollte Platzhalter anstelle von localhost sein?)

Ich habe den eingebauten Debugger sowie den Knotenmonitor ausprobiert. Leider konnte ich den Knoten-Inspektor nicht zum Arbeiten bringen, da er nicht installiert werden konnte (es scheint, dass der Build trotzdem fehlschlägt).

Hier ist meine 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 

Ich fange an, den Behälter mit Docker-compose, diese YML Datei:

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" 

Irgendwelche Ideen? - TIA!

+0

komplette Seite beachten Sie in Frage: Sie haben eine Versionsnummer Tag angeben sollten mit Ihrem ' FROM' Anweisung. 'FROM node: 6.9.5' zum Beispiel ... andernfalls wird jedes Mal, wenn Sie Ihr Image erstellen, die neueste/neueste Version des Knotens angezeigt. das hört sich zuerst gut an, bis ein unerwünschtes Upgrade Ihren Code zerstört –

+0

Danke @DerickBailey Ich werde das bedenken –

+0

haben Sie das versucht: http://stackoverflow.com/questions/12440169/how-do-you-debug- a-node-js-server-läuft-mit-chrome-webkit-as-the-remote-debug –

Antwort

4

Standardmäßig verwendet node.js (und v8 dahinter) immer 127.0.0.1 für den Debugger. Ich habe mir cusspvz/node angesehen und ich kann nirgends finden, wie es den Debugger so aussetzt.

war es schwierig zu sein, diese Konfiguration zu ändern, aber jetzt können Sie nur die Debug-Option mit einem expliziten Host verwenden:

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

Hey, das hat funktioniert! Ich habe tatsächlich etwas sehr ähnliches versucht - mit debug-brk und ich konnte es nicht funktionieren, weshalb ich angenommen habe, dass diese Methode auch nicht funktionieren würde. Das habe ich gesehen, irgendwelche Ideen? 'Debugger überwacht [::]: 5858 module.js: 563 Debug.setBreakPoint (kompiliertWrapper, 0, 0); ^ illegaler Zugang' Wie Sie mich jedoch gerettet haben - ich werde die Bounty vergeben :) Vielen Dank. –

+0

@AdrianLucaThomas, ich habe den gleichen Fehler für Debug-brk. Auch bei Verwendung von '0.0.0.0' anstelle von' [::] '. Wenn es für Sie wichtig ist, können Sie trotzdem 'socat' verwenden, um den Port umzuleiten. Es ist eine Problemumgehung, die ich zuvor verwendet habe. –

+0

@AdrianLucaThomas, funktioniert es für Sie, wenn Sie beide kombinieren? 'Knoten --debug = [::]: 5858 --debug-brk test.js'?Ich bin in der Lage, in der ersten Zeile auf diese Weise zu brechen. –

Verwandte Themen