docker中的节点检查器不加载源代码
我有两个不同图像的docker集装箱。 这是“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
第一个容器正在运行带有debugging选项的服务器应用程序:
$user: node --debug server.js Debugger listening on port 5858 ...
并用debugging器在端口5858上监听,在端口10101上用server.js app监听。
第二个容器正在运行节点检查器
$user: node-inspector Node Inspector v0.12.6 Visit http://127.0.0.1:8080/?port=5858
它在默认情况下在端口5858上连接到debugging器,并在Chrome上监听端口8080上的web-inspector。
问题是当我访问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?"
这里的问题是节点检查器试图连接到localhost / 127.0.0.1,即本地到该容器 ,而不是本地到您的主机。 当您运行桥networking(默认)时,每个容器都有自己的IP。
您可以使用以下任一选项快速解决此问题:
- 两个容器都使用主机networking
- 在这种情况下,您configuration的端口转发不再需要
- 只使用主机networking为节点检查器容器
- 在这种情况下,您仍然需要端口5858映射到主机,但不再是节点检查器上的端口8080