node.js - 如何使用 VSCode 在 docker-compose 中调试运行 Typescript 的 Node.js 应用程序?
问题描述
目标
我的目标是能够在 VSCode 的帮助下调试在 docker-compose 中运行的多个 Node.js 服务。但也存在一些挑战:
ts-node-dev没有 VSCode 调试的文档。但是由于它只是ts-node的包装器(它具有对 VSCode 调试的本机支持),因此应该可以使用此处描述的内容。或者
ts-node
我想调试时必须使用吗?如何调试在 Docker 容器中运行的代码?为此,我可能会做与此处所述类似的事情。但是他们手动将 TYpescript 编译为 Javascript,我不想这样做。
如何协调多个服务?因为我有多个服务,我是否必须选择要调试的服务,或者是否可以一次为所有服务启动调试器?
该项目
我制作了一个具有以下结构的小型示例项目。在 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
运行服务,当检测到代码发生更改时,它会自动重新启动服务器,但如果需要,我愿意使用其他东西。
解决方案
推荐阅读
- r - R - 通过 RCurl 从 javascript 链接中提取 CSV 文件
- java - 处理另一个类的 JFrame
- angular - 当我有时希望它静默失败时,处理 Promise 捕获错误的最佳方法
- python - h5py:如何重命名尺寸?
- angular - 如何从头开始在 Angular 7 中安装依赖项?
- cmake - 无法使用 CMake 为 Yocto 安装常规文件
- symfony4 - 带有自定义 POST 操作的 __invoke() 函数中的 $data 为空
- windows - Windows IIS WebDav 上的 TagSpaces
- typescript - 在调用通用处理程序(如 expressJS 中间件)时,如何让 TypeScript 编译器对方差感到满意
- javascript - 在 ExtReact 6.6.0 中从 FormPanel 获取值