Цель
Моя цель - иметь возможность отлаживать несколько Node.js сервисов, запущенных в docker -композицию, с помощью VSCode. Но есть некоторые проблемы:
ts-node-dev не имеет документации для отладки VSCode. Но так как это просто оболочка вокруг ts-node (которая имеет встроенную поддержку отладки VSCode), это должно быть возможно с чем-то вроде описанного здесь . Или мне нужно использовать ts-node
, когда я хочу отладить?
Как отладить код, который выполняется внутри контейнера Docker? Для этой цели я мог бы сделать нечто подобное, как описано здесь . Но они компилируют TYpescript в Javascript вручную, что я не хочу делать.
Как координировать несколько служб? Поскольку у меня есть несколько служб, придется ли мне выбирать, какую из них я хочу отлаживать, или можно ли запустить отладчик для всех служб одновременно?
Проект
Я сделал небольшой пример проекта со следующей структурой. В docker -композиции работают две службы (шлюз и привет).
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
для запуска сервисов, которые автоматически перезапускают серверы при изменении кода как обнаружено, но я был бы готов использовать что-то еще, если это необходимо.