【问题标题】:How to Debug Node.js Applications Running Typescript Inside docker-compose wtih VSCode?如何使用 VSCode 在 docker-compose 中调试运行 Typescript 的 Node.js 应用程序?
【发布时间】:2020-08-10 16:13:13
【问题描述】:

目标

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

  1. ts-node-dev 没有 VSCode 调试的文档。但由于它只是ts-node 的包装器(它具有对 VSCode 调试的本机支持),这应该可以通过here 描述的方式实现。还是我要调试时必须使用ts-node

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

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

项目

我制作了一个小的sample project,其结构如下。在 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 来运行服务,它会在检测到代码发生更改时自动重新启动服务器,但如果需要,我愿意使用其他东西。

【问题讨论】:

  • 只是一个想法,你试过VSCode远程容器扩展code.visualstudio.com/docs/remote/containers吗?
  • @V.i.K.i 看起来很有趣。但我第一眼看到的问题是它在 one 容器中运行。但是我有很多容器。但我会仔细研究一下:)
  • 当然。试一试。

标签: node.js typescript visual-studio-code docker-compose ts-node


【解决方案1】:

【讨论】:

    猜你喜欢
    • 2017-04-19
    • 2019-06-17
    • 2021-02-04
    • 2017-10-21
    • 2018-08-29
    • 1970-01-01
    • 1970-01-01
    • 2016-03-13
    • 2017-05-29
    相关资源
    最近更新 更多