调试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:5858127.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

09-18 05:51