簡體   English   中英

在Docker容器中調試nodejs app

[英]Debug nodejs app inside Docker container

我第一次使用Docker設置了一個Nodejs項目,而我在將調試器附加到應用程序時遇到了麻煩。

這是我的docker文件:

FROM node:latest
LABEL Name=graphql Version=0.1.0 

# Create app directory
RUN mkdir -p /graphql
WORKDIR /graphql

# Install app dependencies
COPY package.json /graphql
RUN npm install -g gulp
RUN npm install

# Bundle app source
COPY . /graphql

EXPOSE 3000
EXPOSE 5858
EXPOSE 8000

CMD gulp

並撰寫一個:

version: '2'

services:
  graphql:
    image: graphql:latest
    container_name: apollo-graphql
    build:
      context: .
      dockerfile: dockerfile
    environment:
      NODE_ENV: development
    tty: true
    ports:
      - 3000:3000
      - 5858:5858
      - 8000:8000
    volumes:
      - .:/graphql
    ## set your startup file here
    command: gulp

gulp任務目前正在啟動nodemon,如下所示:

gulp.task('serve', ['bundle'], () => {

    stream = nodemon({
        execMap: {
            js: 'node --debug=5858'
        },
        script: 'build/server.bundle.js',
        verbose: true
    })

這似乎運行一切都很好,包括輸出聲明: Debugger listening on 127.0.0.1:5858然而我似乎無法連接到它。 我正在使用VScode,我的啟動配置文件如下:

"name": "Attach",
"type": "node",
"request": "attach",
"address": "127.0.0.1",
"port": 5858,
"localRoot": "${workspaceRoot}/graphql/",
"remoteRoot": "/graphql/",

即使我將--debug標志更改為--inspect以使用新協議,我仍然無法在Chrome devtools中打開它。

我已經看過一些教程和那些我正在做的事情,但我在這里錯過了什么? 我還看到StackOverflow關於使用node-inspect運行第二個容器的一些建議,但是我寧願不去那條路,因為我試圖保持簡單。 事實上,這種設置似乎適用於那些教程,為什么它對我不起作用?

提前致謝!

我已多次驗證此配置,無法重現該問題

這是我的整個.vscode / launch.json文件

{
    // Use IntelliSense to learn about possible Node.js debug attributes.
    // Hover to view descriptions of existing attributes.
    // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
    "version": "0.2.0",
    "configurations": [
        {
            "type": "node",
            "request": "attach",
            "name": "Attach to Docker container",
            "port": 5858,
            "address": "127.0.0.1",
            "localRoot": "${workspaceRoot}",
            "remoteRoot": "/var/app"
        }
    ]
}

我唯一能想到的是確保你在VS Code中運行“Attach”調試模式。

否則,我很無能為力。 它似乎對我有用。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM