Узел-инспектор в докере не загружает источники
У меня есть два док-контейнера с разными изображениями. Это частичный вывод команды "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.
Вы можете быстро решить эту проблему с помощью одной из следующих опций:
- Используйте хост-сеть для обоих контейнеров
- В этом случае переадресация портов, которую вы настроили, больше не нужна
- Используйте хост-сеть только для контейнера инспектора узлов
- В этом случае вам все еще нужен порт 5858, сопоставленный с хостом, но больше не порт 8080 на инспекторе узлов