我有一个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,将启动节点检查器。
如何为容器内部的节点实例执行此操作,但应从主机调试。
更新
我可以通过改变两件事来设法启动调试过程:
node_args: --inspect=localhost:9080
docker run ... -p 9080:9080
但是这会带来一个问题:在执行node --inspect=... ...
之后,命令行上会显示要使用的URL,但是当运行docker容器时,信息会在某处显示到日志中。那么如何从那里访问网址呢?
答案 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