2017-03-13 160 views
3

我一直在第一次使用Docker設置Nodejs項目,並且在將調試器附加到應用程序時遇到問題。在Docker容器中調試nodejs應用程序

這裏是我的搬運工文件:

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 

吞氣任務當前正在開展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上看到了關於使用節點檢查運行第二個容器的一些建議,但我寧願不去那條路線,因爲我試圖讓事情變得簡單。事實上,這種設置似乎在這些教程中起作用,那爲什麼它不適合我?

在此先感謝!

+0

您是否設法解決了您的問題?如果你在docker-machine中運行Docker鏡像,一個潛在的問題是你應該指定不同的地址(你可以使用'docker-machine env'命令獲得它)。在我的情況下,它是192.168.99.100。但是,無論使用什麼協議,我都會觀察到最新'節點'映像的類似問題。有趣的是,在Windows中本地運行時可以調試相同的代碼。 – gerichhome

回答

0

我已經驗證了這個配置幾次,不能重現該問題

這裏是我的整個.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」調試模式。

否則,我很無能。它似乎在爲我工作。

相關問題