下面是一个vscode launch.json的配置文件
{
"version": "0.2.0",
"configurations": [
{
"name": "Attach to Docker",
"port": 9229,
"request": "attach",
"restart": true,
"address": "localhost",
"localRoot": "${workspaceFolder}",
"remoteRoot": "/backend",
"type": "node"
}
]
}
其中:
port:9229是程序debug的端口。
在docker配置文件中,需要将9229端口对外开放
remoteRoot:是docker容器里面代码存放的位置
ports:
- 3500:3500
- 9229:9229
working_dir: /backend
有一个关键的点是:
默认的debug ip地址为127.0.0.1,即本机ip。
但是在docker容器中,本机ip只对自己生效。
所以在启动debug的时候,需要将地址指定为:0.0.0.0
以下是nest程序的示例:
"start:debug": "nest start --debug 0.0.0.0 9229 --watch",
127.0.0.1 和 localhost 一样,都是只本机地址。
0.0.0.0 是路由表的默认路由,表示整个网络,即网络内的所有主机,而非某一个主机。
这里如果用默认的 localhost,那服务只在容器内生效,要指定 0.0.0.0 才行。
此时,点击debug就正常工作了。
可以在docker的日志里面看到:
就说明连接成功了。