【发布时间】:2017-12-18 21:52:55
【问题描述】:
我正在尝试设置我的 VSCode 环境,以便我可以通过按 F5 一步调试我的 dockerized node.js 程序。
目前我的设置如下:
.vscode/launch.json:
{
"version": "0.1.0",
"configurations": [
{
"name": "Attach",
"type": "node",
"protocol":"inspector",
"request": "attach",
"port": 5858,
"restart": false,
"sourceMaps": false,
"localRoot": "${workspaceRoot}/",
"remoteRoot": "/usr/local/src/my-app"
}
]
}
docker-compose.debug.yml:
version: "3"
services:
app:
build: .
ports:
- "3000:3000"
- "5858:5858"
entrypoint: node --inspect-brk=0.0.0.0:5858 app/entry.js
networks:
- appnet
networks:
appnet:
现在,当我在外部终端中执行docker-compose -f ./docker-compose.debug.yml up --build,然后在 VSCode 中运行“附加”配置时,这可以正常工作。
但是,在从 VSCode 附加到远程 (docker) 进程之前,我找不到运行 docker-compose 的方法。目标是能够按 F5 并让 VSCode 启动 docker-compose,并自动附加到它。
我尝试通过使用“Launch via NPM”VSCode 配置调用 docker-compose 并添加
"docker-debug" : "docker-compose -f ./docker-compose.debug.yml up --build"
到我的 package.json 脚本部分。
但这只是部分起作用,因为调试器似乎忽略了配置的remoteRoot 属性,因此对于调试我的程序完全没用(例如:它不接受断点,并且它知道如何处理的唯一文件调试是nodes.js 内部...)
知道如何解决这个问题吗?
【问题讨论】:
-
您可能想查看自定义任务:code.visualstudio.com/docs/editor/tasks#_custom-tasks 并在附加配置中添加一个自定义任务,该任务将 docker-compose 作为“preLaunchTask”运行。然而,这会带来其他问题。您可以在后台运行 docker-compose。在这种情况下,vscode 将尝试附加到尚未运行的进程。或者,您可以在前台运行它,然后除非您退出进程,否则它不会进入调试器。我还没有解决方案。
-
查看我今天得到的答案stackoverflow.com/questions/46500639/…
标签: node.js docker visual-studio-code docker-compose