Узел-инспектор в докере не загружает источники

У меня есть два док-контейнера с разными изображениями. Это частичный вывод команды "docker ps":

$user: docker ps
CONTAINER ID    IMAGE          PORTS
9c8ff81215d4    node:slim      0.0.0.0:5858->5858/tcp, 0.0.0.0:10101->10101/tcp
d85a0de91432    node-debug     0.0.0.0:8080->8080/tcp

Первый контейнер запускает серверное приложение с опцией отладки:

$user: node --debug server.js
Debugger listening on port 5858
...

и прослушивает порт 5858 с отладчиком и порт 10101 с приложением server.js.

Во втором контейнере работает узел-инспектор

$user: node-inspector
Node Inspector v0.12.6
Visit http://127.0.0.1:8080/?port=5858

который по умолчанию подключается к порту 5858 к отладчику и прослушивает порт 8080 для веб-инспектора в Chrome.

Проблема в том, что когда я захожу на сайт http://127.0.0.1:8080/?port=5858 я вижу инспектора без загруженных источников.

В консоли Chrome есть эта ошибка:

Request with id = 10 failed. "ErrorNotConnected: Error: connect ECONNREFUSED 127.0.0.1:5858. Is node running with --debug port 5858?"

1 ответ

Проблема здесь в том, что инспектор узлов пытается подключиться к localhost/127.0.0.1, то есть локально к этому контейнеру, а не локально к вашему хосту. Когда вы работаете в мостовой сети (по умолчанию), каждый контейнер имеет свой собственный IP.

Вы можете быстро решить эту проблему с помощью одной из следующих опций:

  1. Используйте хост-сеть для обоих контейнеров
    • В этом случае переадресация портов, которую вы настроили, больше не нужна
  2. Используйте хост-сеть только для контейнера инспектора узлов
    • В этом случае вам все еще нужен порт 5858, сопоставленный с хостом, но больше не порт 8080 на инспекторе узлов
Другие вопросы по тегам