【发布时间】:2020-08-10 16:13:13
【问题描述】:
目标
我的目标是能够在 VSCode 的帮助下调试在 docker-compose 中运行的多个 Node.js 服务。但也存在一些挑战:
ts-node-dev 没有 VSCode 调试的文档。但由于它只是ts-node 的包装器(它具有对 VSCode 调试的本机支持),这应该可以通过here 描述的方式实现。还是我要调试时必须使用
ts-node?如何调试在 Docker 容器中运行的代码?为此,我可能会做类似here 描述的事情。但是他们手动将 TYpescript 编译为 Javascript,我不想这样做。
如何协调多个服务?因为我有多个服务,我必须选择要调试哪一个,还是可以一次为所有服务启动调试器?
项目
我制作了一个小的sample project,其结构如下。在 docker-compose 中运行了两个服务(gateway 和 hello)。
package.json
tsconfig.json
docker-compose.yaml
services
hello
index.ts
gateway
index.ts
运行后docker-compose up --build:
- http://localhost:3000 - 网关直接响应
- http://localhost:3000/hello - 网关从 hello 服务发送响应
这是我用来在开发模式下启动项目的docker-compose.yaml 文件。
version: "3"
services:
gateway:
image: node:lts-alpine
working_dir: /
volumes:
- ./package.json:/package.json
- ./tsconfig.json:/tsconfig.json
- ./services/gateway:/services/gateway
- ./node_modules:/node_modules
command: yarn run ts-node-dev services/gateway
ports:
- 3000:3000
hello:
image: node:lts-alpine
working_dir: /
volumes:
- ./package.json:/package.json
- ./tsconfig.json:/tsconfig.json
- ./services/hello:/services/hello
- ./node_modules:/node_modules
command: yarn run ts-node-dev services/hello
请注意,我使用ts-node-dev 来运行服务,它会在检测到代码发生更改时自动重新启动服务器,但如果需要,我愿意使用其他东西。
【问题讨论】:
-
只是一个想法,你试过VSCode远程容器扩展code.visualstudio.com/docs/remote/containers吗?
-
@V.i.K.i 看起来很有趣。但我第一眼看到的问题是它在 one 容器中运行。但是我有很多容器。但我会仔细研究一下:)
-
当然。试一试。
标签: node.js typescript visual-studio-code docker-compose ts-node