Gỡ lỗi ứng dụng webpack-dev-server bên trong Docker container


8

Tôi đang sử dụng webpack-dev-serverđể chạy ứng dụng Nestjs bên trong container Docker. Tất cả đều hoạt động, nhưng tôi không thể gỡ lỗi ứng dụng từ ví dụ Mã VS của mình. Tôi đang cố gắng để lộ cổng 9229 bằng cấu hình này trên webpack.config.js:

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

Khi tôi chạy netstat -lbên trong container, tôi có thể thấy nút đó không nghe cổng 9229:

sản lượng netstat

Tôi đang hiển thị cổng 9229 trong các tệp Dockerfile và docker-compose. 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"]

Và tệp 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:

Và đây là tập lệnh tôi đang sử dụng để chạy ứng dụng:

"start:debug": "webpack --config webpack.config.js && node --inspect=0.0.0.0:9229 node_modules/webpack-dev-server/bin/webpack-dev-server.js",

Cấu hình khởi chạy của tôi như sau:

{
    "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>/**"
    ],
}

Và khi tôi chạy cấu hình này với bộ chứa và chạy, tôi nhận được một thông báo nói rằng Mã VS không thể kết nối với quy trình.

Tin nhắn mã VS

Vì vậy, câu hỏi của tôi là: có cách nào để gỡ lỗi ứng dụng JavaScript / TypeScript đang chạy webpack-dev-serverbên trong một container Docker không? Điều gì là sai trong môi trường của tôi?

Cảm ơn đã giúp đỡ.

BIÊN TẬP

Rõ ràng vấn đề của tôi không liên quan đến Docker, vì tôi có thể tái tạo nó bên ngoài container.


1
Liệu docker-compose pscho thấy rằng open-tuna-apiđã 9229:9229ràng buộc trong Cổng? Hãy thử thay đổi địa chỉ trong cấu hình của vscode thành localhosthoặc 127.0.0.1.
cbr

1
Quan trọng hơn, nó có thành công trong việc đưa ra dịch vụ? Bạn có thể truy cập localhost: 3000 sau khi bắt đầu gỡ lỗi không?
cbr

1
Ah, tôi thấy vấn đề, cổng devserver của bạn giống như cổng thanh tra nút. Bạn sẽ muốn thay đổi cổng của máy chủ dev thành một cái gì đó khác (8080? 9000? Bất cứ thứ gì thực sự) và chuyển nó qua trong tệp của docker-compose ports. Có thể không khởi động được vì máy chủ thanh tra của nút hoặc máy chủ phát triển webpack không thành công khi cố gắng liên kết với: 9229 - vì cả hai đều cố gắng liên kết với cùng một cổng.
cbr

Xin chào @cubrr, cảm ơn vì sự giúp đỡ. Có, tôi có thể truy cập ứng dụng trên localhost: 3000. Và tôi đã thử sử dụng localhost127.0.0.1trong cấu hình VS Code. Ngoài ra, tôi đã thay đổi 9229cổng thành 9000trên tất cả các tệp và vấn đề vẫn còn.
Bruno Peres

1
Có vẻ như bạn đang cố gắng webpack-dev-servertự gỡ lỗi và sau khi đã xây dựng gói, máy chủ dev có nghĩa là để tránh webpack --config webpack.config.jscuộc gọi. tập tin nhập của máy chủ là gì?
MrBar

Câu trả lời:


0

Hãy xem cấu hình của bạn và đảm bảo bạn bao gồm programtrường. Và trỏ nó vào đúng tập tin bên dưới node_modules.

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

Điều đó sẽ giúp bạn đi.

Nếu bạn muốn hiểu rõ hơn về vấn đề này, sẽ có một cuộc trò chuyện dài hơn mà bạn có thể thấy hữu ích - hãy xem nhận xét này trên repo máy chủ webpack-dev-server GitHub chính.


Xin chào @idancali, cảm ơn câu trả lời của bạn. Tôi đã thử, nhưng tôi đang gặp vấn đề tương tự. Ngoài ra, tôi nhận được cảnh báo từ mã VS nói rằng thuộc tính "chương trình" không được phép. Tôi sẽ xem xét các liên kết bạn đã đăng.
Bruno Peres
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.