Я использую webpack-dev-server
для запуска приложения Nest js внутри контейнера Docker. Все работает, но я не могу отладить приложение из моего экземпляра VS Code. Я пытаюсь выставить порт 9229, используя эту конфигурацию на webpack.config.js
:
devServer: {
host: '0.0.0.0',
port: 9229,
},
Когда я запускаю netstat -l
внутри контейнера, я вижу, что узел не слушает порт 9229:
Я открываю порт 9229 в файлах Dockerfile и docker. Dockerfile:
FROM node:12.16.1-alpine
WORKDIR /usr/src/app
COPY package.json yarn.lock ./
RUN yarn
COPY . .
EXPOSE 3000
EXPOSE 9229
CMD [ "yarn", "run", "start:debug"]
и файл docker -compose.yml:
version: '3.7'
services:
open-tuna-api:
image: opentunaapi
ports:
- 3000:3000
- 9229:9229
volumes:
- ./dist:/usr/src/app/dist
- ./:/usr/src/app
networks:
- open-tuna-network
expose:
- 9229
networks:
open-tuna-network:
И вот скрипт, который я использую для запуска приложения:
"start:debug": "webpack --config webpack.config.js && node --inspect=0.0.0.0:9229 node_modules/webpack-dev-server/bin/webpack-dev-server.js",
Моя конфигурация запуска выглядит следующим образом:
{
"name": "Attach",
"preLaunchTask": "compose-up",
"stopOnEntry": true,
"type": "node",
"request": "attach",
"port": 9229,
"cwd": "${workspaceFolder}", // the root where everything is based on
"localRoot": "${workspaceFolder}", // root of all server files
"remoteRoot": "/usr/src/app", // workspace path which was set in the dockerfile
"outFiles": ["${workspaceFolder}/dist/**/*.js"], // all compiled JavaScript files
"protocol": "inspector",
"restart": true,
"sourceMaps": true,
"trace": "verbose",
"address": "0.0.0.0",
"skipFiles": [
"<node_internals>/**"
],
}
И когда я запускаю эту конфигурацию с работающим контейнером, я получаю сообщение о том, что VS Code не может подключиться к процессу.
Итак, мой вопрос: есть ли способ отладки JavaScript / приложения TypeScript, работающего на webpack-dev-server
внутри Docker контейнер? Что не так в моей среде?
Спасибо за помощь.
РЕДАКТИРОВАТЬ
Очевидно, что моя проблема не имеет отношения к Docker, так как я может воспроизвести его за пределами контейнера.