在 VS Code 中调试 Docker 中的 Node Typescript 应用程序 运行
Debug in VS Code a Node Typescript app running in Docker
我是 运行 Docker 中的 Node 应用程序,docker-compose
。我正在使用 Traefik 作为代理。
我希望能够在 VS Code 中调试它,但我无法连接到我的应用程序:
connect ECONNREFUSED 127.0.0.1:9229
这是我的文件:
docker-compose.yml:
version: '3'
services:
traefik:
image: traefik:1.7
command: --docker --docker.exposedbydefault=false
ports:
- '80:80'
- 9229:9229
volumes:
- /var/run/docker.sock:/var/run/docker.sock
core:
image: node:alpine
labels:
- traefik.enable=true
- traefik.port=4001
- traefik.backend=core
- traefik.frontend.rule=Host:core.localhost
volumes:
- ./leav_core:/app
working_dir: /app
command: [sh, -c, 'npm start']
expose:
- '9229'
volumes:
arango_data:
driver: local
npm start
实际执行的命令是:
ts-node --inspect=0.0.0.0:9229 --type-check src/`
VSCode中的调试设置:
{
"version": "0.2.0",
"configurations": [
{
"name": "Docker: Attach to Node",
"type": "node",
"request": "attach",
"remoteRoot": "/app"
}
]
}
我使用 Traefik http://core.localhost
上定义的 URL 访问我的应用程序,但我不知道如何将调试器附加到它
谢谢!
我的方法并不好,因为 VS Code 中有一个很棒的工具,叫做 "Remote development"。它是一个允许您直接在 VS Code 中附加容器的扩展。
首先,我必须更改启动节点应用程序的方式以启用检查。由于 ts-node 不支持 inspect
选项,你必须使用这个:
node --inspect=0.0.0.0:9229 -r ts-node/register src/
然后,使用远程开发进入您的容器。
进入后,您可以像通常在 "classic" 节点环境中一样调试您的应用程序。就个人而言,我在 launch.json
中使用了这些设置:
{
"type": "node",
"request": "attach",
"name": "Attach",
"port": 9229,
"skipFiles": [
"<node_internals>/**",
"node_modules/**"
]
}
一切正常,我的断点被正确命中并且可以有效地调试我的应用程序:)
我是 运行 Docker 中的 Node 应用程序,docker-compose
。我正在使用 Traefik 作为代理。
我希望能够在 VS Code 中调试它,但我无法连接到我的应用程序:
connect ECONNREFUSED 127.0.0.1:9229
这是我的文件:
docker-compose.yml:
version: '3'
services:
traefik:
image: traefik:1.7
command: --docker --docker.exposedbydefault=false
ports:
- '80:80'
- 9229:9229
volumes:
- /var/run/docker.sock:/var/run/docker.sock
core:
image: node:alpine
labels:
- traefik.enable=true
- traefik.port=4001
- traefik.backend=core
- traefik.frontend.rule=Host:core.localhost
volumes:
- ./leav_core:/app
working_dir: /app
command: [sh, -c, 'npm start']
expose:
- '9229'
volumes:
arango_data:
driver: local
npm start
实际执行的命令是:
ts-node --inspect=0.0.0.0:9229 --type-check src/`
VSCode中的调试设置:
{
"version": "0.2.0",
"configurations": [
{
"name": "Docker: Attach to Node",
"type": "node",
"request": "attach",
"remoteRoot": "/app"
}
]
}
我使用 Traefik http://core.localhost
上定义的 URL 访问我的应用程序,但我不知道如何将调试器附加到它
谢谢!
我的方法并不好,因为 VS Code 中有一个很棒的工具,叫做 "Remote development"。它是一个允许您直接在 VS Code 中附加容器的扩展。
首先,我必须更改启动节点应用程序的方式以启用检查。由于 ts-node 不支持 inspect
选项,你必须使用这个:
node --inspect=0.0.0.0:9229 -r ts-node/register src/
然后,使用远程开发进入您的容器。
进入后,您可以像通常在 "classic" 节点环境中一样调试您的应用程序。就个人而言,我在 launch.json
中使用了这些设置:
{
"type": "node",
"request": "attach",
"name": "Attach",
"port": 9229,
"skipFiles": [
"<node_internals>/**",
"node_modules/**"
]
}
一切正常,我的断点被正确命中并且可以有效地调试我的应用程序:)