调试 Node.js 应用程序时,我希望命令node index.js --inspect=5858
使我的索引.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 Dev Tools中指定了localhost:5858
和127.0.0.1:5858
网络端点,尽管Dev Tools仍然没有像它建议的那样自动连接到它。
这似乎是我的 Docker 设置的一个问题,尽管如您所见,我已经将端口暴露给主机。可能是什么问题?谢谢。
问题是,当您在容器内运行它时,默认情况下它只侦听本地主机。所以你有两个选择
使用主机网络
将network_mode: host
添加到服务并删除端口映射。不是一件理想的事情
确保 nodejs 侦听每个 IP
改变
command: node index.js --inspect=5858
自
command: node --inspect=0.0.0.0:5858 index.js