设置在Docker中运行的节点调试

时间:2018-11-02 08:52:30

标签: node.js docker debugging visual-studio-code

因此,我花了最后两天(和夜晚)徒劳地尝试在VS Code中设置调试器,以调试在Docker中运行的节点应用程序。目前,我在Docker上有3天的经验,在有人做出非常出色的反应将其标记为重复之前,我已经阅读了Google搜索结果首页上的每篇博客文章/答案(的确如此!),我不知道我还能去哪里。我在流泪。请看看并指出我可能正在犯的愚蠢错误。这是我的相关设置:

package.json:

"scripts": {
"start": "node .",
"lint": "eslint **/*.js",
"dev": "nodemon --inspect-brk=0.0.0.0:9229 --watch src --exec node -r dotenv/config ."
},

({--inspect-brk=0.0.0.0:9229是我根据this问题报告的建议添加的)

Dockerfile:

FROM node:8-alpine

ENV NODE_ENV production

RUN apk --update add git ffmpeg imagemagick ghostscript poppler-utils libpng-dev

WORKDIR /app

ADD . /app

RUN npm i

ENTRYPOINT node .

这是启动配置

{
        "type": "node",
        "request": "attach",
        "name": "Docker: Attach to Node",
        "port": 9229,
        "address": "localhost",
        "localRoot": "${workspaceFolder}",
        "remoteRoot": "/app",
        "protocol": "inspector"
    },

这是docker-compose文件:

version: "3"
services:

lil-upload:
environment: #redacted

image: 'pdffix'
ports:
- '8080:64544'
- '9229:9229'
restart: always

据我了解,我需要从调试器将要连接的docker暴露端口(在本例中为9229),并且当我启动调试器时,它将在此连接。但是每次我不断收到此错误Cannot connect to runtime process, timeout after 10000 ms - (reason: Cannot connect to the target: read ECONNRESET)

如果将我的launch.json中的配置更改为launch而不是attach,以便我可以在调试模式下直接启动该应用程序,则会得到Cannot connect to runtime process, timeout after 10000 ms - (reason: Cannot connect to the target: connect ECONNREFUSED 127.0.0.1:9229) 我真的不知道要使这件该死的事情还需要做什么。

1 个答案:

答案 0 :(得分:0)

我终于明白了。作为白痴,我不知道Dockerfile中ENTRYPOINT的属性,我让脚本运行默认脚本,而不是运行我想要的dev。只需固定ENTRYPOINT并将其设置为npm run dev,整个世界又将变成阳光和彩虹。感谢所有没有回应的人。