调试Node.js应用程序时,我希望命令node index.js --inspect=5858
使我的index.js文件可在端口5858上调试。
当我在主机之外的Docker外部运行应用程序时,便可以在Chrome Dev Tools中调试该应用程序。我在Docker中做了同样的事情,Chrome开发工具无法访问端口5858上的调试器。
如您所见,端口5858公开给主机用于调试:
version: '2'
services:
server:
build: .
command: node index.js --inspect=5858
volumes:
- .:/app
ports:
- "8000:8000"
- "5858:5858"
environment:
- NODE_ENV = "development"
我已经在Chrome开发者工具中指定了
localhost:5858
和127.0.0.1:5858
网络终结点,尽管开发者工具仍然没有按照建议自动连接到它。这似乎是我的Docker设置的问题,但是正如您所看到的,我已将端口公开给主机。可能是什么问题?谢谢。
最佳答案
问题是,当您在容器中运行它时,默认情况下它仅侦听localhost。所以你有两个选择
使用主机网络
将network_mode: host
添加到您的服务并删除端口映射。并非理想的事情
确保nodejs侦听每个IP
更改command: node index.js --inspect=5858
至command: node --inspect=0.0.0.0:5858 index.js