2017-02-21 26 views
5

Я бы хотел использовать официальное изображение докеров для моего приложения. Однако я не могу заставить удаленный отладчик работать на главной машине. Я использую код Visual Studio для подключения к удаленному отладчику.Удаленная отладка NodeJS в Docker с Visual Studio Код

Странная вещь - использование неофициального изображения cusspvz/node удаленный отладчик работает правильно.

Когда я бегу docker log против cusspvz/node экземпляра контейнера я получаю следующий вывод:

Debugger listening on [::]:5858

Однако, когда я бегу docker log против node экземпляра контейнера я получаю:

Debugger listening on 127.0.0.1:5858

Это заставляет меня полагать, что отладчик прослушивает неправильный IP-адрес ddress (должен быть подстановочный знак, а не localhost?)

Я пробовал встроенный отладчик, а также 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" 

Есть идеи? - ТИА!

+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-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'?Я могу сломаться на первой линии таким образом. –

 Смежные вопросы

  • Нет связанных вопросов^_^