debugging节点(> = 6.3)从docker集装箱

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

#process.yml apps: - script: ./index.js name: client watch: true args: --inspect #Dockerfile CMD pm2-docker process.yml 

正如我可以在这篇文章中读到的 :节点检查器已经到达node.js的核心并运行如下所示的脚本:

 node --inspect <somescript.js> 

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

我怎样才能做到这一点在一个容器内的节点实例,但应该从主机debugging。

UPDATE

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

  1. node_args: --inspect=localhost:9080
  2. docker run ... -p 9080:9080

但是,这带来了一个问题:要使用的URL显示在命令行上的node --inspect=... ...之后执行,但是当运行node --inspect=... ...容器时,信息将下降到日志某处。 那么我怎样才能从那里访问url?

您只需发布所需的-p 9229:9229或

 ports: - 9229:9229 

--inspect -compose中,然后使用--inspect--inspect arg或直接使用node --inspect index启动它。 url将被打印出来,你可以简单地使用它像铬没有docker。

为了find这行后,你可以使用

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

要么

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