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过程:
-
node_args: --inspect=localhost:9080
-
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