Отладка приложения webpack-dev-server внутри контейнера Docker - PullRequest
8 голосов
/ 02 марта 2020

Я использую webpack-dev-server для запуска приложения Nest js внутри контейнера Docker. Все работает, но я не могу отладить приложение из моего экземпляра VS Code. Я пытаюсь выставить порт 9229, используя эту конфигурацию на webpack.config.js:

devServer: {
  host: '0.0.0.0',
  port: 9229,
},

Когда я запускаю netstat -l внутри контейнера, я вижу, что узел не слушает порт 9229:

netstat output

Я открываю порт 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 не может подключиться к процессу.

VS Code message

Итак, мой вопрос: есть ли способ отладки JavaScript / приложения TypeScript, работающего на webpack-dev-server внутри Docker контейнер? Что не так в моей среде?

Спасибо за помощь.

РЕДАКТИРОВАТЬ

Очевидно, что моя проблема не имеет отношения к Docker, так как я может воспроизвести его за пределами контейнера.

1 Ответ

0 голосов
/ 10 марта 2020

Посмотрите на вашу конфигурацию и убедитесь, что вы включили поле program. И укажите его в нужном файле под node_modules.

"program": "${workspaceRoot}/node_modules/webpack-dev-server/bin/webpack-dev-server.js"

. Это должно помочь вам.

Если вы хотите больше узнать об этом, есть более длинный разговор, который вы могли бы найти полезным - проверьте этот комментарий на главном webpack-dev-server GitHub repo.

...