在 Docker 容器内调试 webpack-dev-server 应用程序

Bru*_*res 8 node.js docker webpack webpack-dev-server nestjs

我正在使用webpack-dev-server在 Docker 容器内运行 Nestjs 应用程序。一切都已启动并正在运行,但我无法从我的 VS Code 实例调试应用程序。我正在尝试使用以下配置公开 9229 端口webpack.config.js

devServer: {
  host: '0.0.0.0',
  port: 9229,
},
Run Code Online (Sandbox Code Playgroud)

当我netstat -l在容器内运行时,我可以看到该节点没有侦听 9229 端口:

网络状态输出

我在 Dockerfile 和 docker-compose 文件中公开了端口 9229。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"]
Run Code Online (Sandbox Code Playgroud)

以及 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:
Run Code Online (Sandbox Code Playgroud)

这是我用来运行应用程序的脚本:

"start:debug": "webpack --config webpack.config.js && node --inspect=0.0.0.0:9229 node_modules/webpack-dev-server/bin/webpack-dev-server.js",
Run Code Online (Sandbox Code Playgroud)

我的启动配置如下:

{
    "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>/**"
    ],
}
Run Code Online (Sandbox Code Playgroud)

当我在容器启动并运行的情况下运行此配置时,我收到一条消息,指出 VS Code 无法连接到该进程。

VS 代码消息

所以,我的问题是:有没有办法调试webpack-dev-server在 Docker 容器内运行的 JavaScript/TypeScript 应用程序?我的环境有什么问题?

谢谢您的帮助。

编辑

显然我的问题与 Docker 无关,因为我可以在容器外重现它。

ida*_*ali 0

查看您的配置并确保包含该program字段。并将其指向 下的正确文件node_modules

"program": "${workspaceRoot}/node_modules/webpack-dev-server/bin/webpack-dev-server.js"
Run Code Online (Sandbox Code Playgroud)

这应该能让你继续前进。

如果您想更深入地了解这一点,您可能会发现更长的对话很有用 - 查看主webpack-dev-server GitHub 存储库上的此评论