来自docker容器

时间:2017-04-23 13:03:11

标签: node.js docker remote-debugging node-inspector

我有一个docker容器,它使用pm2来运行节点,如下所示:

#process.yml
apps:

  - script: ./index.js
    name: client
    watch: true
    args: --inspect

 #Dockerfile

 CMD pm2-docker process.yml

正如我在that post中读到的那样:节点检查器已经到达node.js的核心并运行如下脚本:

node --inspect <somescript.js>

在命令行上提供一些输出:chrome-devtools://…并导航到chrome中的该URL,将启动节点检查器。

如何为容器内部的节点实例执行此操作,但应从主机调试。

更新

我可以通过改变两件事来设法启动调试过程:

  1. node_args: --inspect=localhost:9080
  2. docker run ... -p 9080:9080
  3. 但是这会带来一个问题:在执行node --inspect=... ...之后,命令行上会显示要使用的URL,但是当运行docker容器时,信息会在某处显示到日志中。那么如何从那里访问网址呢?

1 个答案:

答案 0 :(得分:2)

您只需使用-p 9229:9229或

发布所需内容
ports: 
  - 9229:9229
在docker-compose中

,然后使用pm2和--inspect arg或直接使用node --inspect index启动它。 然后将打印出网址,您只需在没有泊坞窗的情况下使用它就可以使用它。

要在之后找到该行,您可以使用

docker-compose logs service-name | grep chrome-devtools

docker logs container-id 2>&1 | grep chrome-devtools