首页 > 解决方案 > 如何使用 VSCode 在 docker-compose 中调试运行 Typescript 的 Node.js 应用程序?

问题描述

目标

我的目标是能够在 VSCode 的帮助下调试在 docker-compose 中运行的多个 Node.js 服务。但也存在一些挑战:

  1. ts-node-dev没有 VSCode 调试的文档。但是由于它只是ts-node的包装器(它具有对 VSCode 调试的本机支持),因此应该可以使用此处描述的内容。或者ts-node我想调试时必须使用吗?

  2. 如何调试在 Docker 容器中运行的代码?为此,我可能会做与此处所述类似的事情。但是他们手动将 TYpescript 编译为 Javascript,我不想这样做。

  3. 如何协调多个服务?因为我有多个服务,我是否必须选择要调试的服务,或者是否可以一次为所有服务启动调试器?

该项目

我制作了一个具有以下结构的小型示例项目。在 docker-compose 中运行了两个服务(gateway 和 hello)。

package.json
tsconfig.json
docker-compose.yaml
services
  hello
    index.ts
  gateway
    index.ts

运行后docker-compose up --build

这是我用来在开发模式下启动项目的 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运行服务,当检测到代码发生更改时,它会自动重新启动服务器,但如果需要,我愿意使用其他东西。

标签: node.jstypescriptvisual-studio-codedocker-composets-node

解决方案



推荐阅读