因此,我花了最后两天(和夜晚)徒劳地尝试在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)
我真的不知道要使这件该死的事情还需要做什么。
答案 0 :(得分:0)
我终于明白了。作为白痴,我不知道Dockerfile中ENTRYPOINT
的属性,我让脚本运行默认脚本,而不是运行我想要的dev
。只需固定ENTRYPOINT
并将其设置为npm run dev
,整个世界又将变成阳光和彩虹。感谢所有没有回应的人。