nodemon、dockerfile和docker"/>
用nodemon、dockerfile和docker
我试了很多东西,看了很多文章,有时我的调试甚至不工作,当它工作时,我的应用程序从来没有停止在我的断点,而我正在运行我的应用程序与docker,如果我删除launch.json和运行我的应用程序在docker之外,只是运行 "node app.js" ,我可以正常调试。
如果这是一个明显的事情,我很抱歉,我真的很难做到这一点。
所以,如果有人能给我任何指导,我会很高兴。
这是我的package.json
"name": "ahgorastrainer",
"version": "1.0.0",
"description": "",
"main": "app.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1",
"start": "nodemon --inspect=0.0.0.0:9229 app.js"
},
"author": "Pedro Verani",
"license": "ISC",
"dependencies": {
"bcryptjs": "^2.4.3",
"body-parser": "^1.19.0",
"bootstrap": "^4.4.1",
"ejs": "^3.1.2",
"express": "^4.17.1",
"express-session": "^1.17.1",
"mongoose": "^5.9.10",
"nodemailer": "^6.4.6",
"nodemon": "^2.0.3"
}
}
Docker-compose
version: '3'
services:
ahgora-strainer:
build: .
command: npm start
ports:
- 3000:3000
- 9229:9229
volumes:
- .:/usr/app
Docker文件
FROM node:alpine
WORKDIR /usr/app
COPY package*.json ./
RUN npm install --quiet
COPY . .
EXPOSE 3000
CMD ["npm", "start"]
启动Json (这里是我尝试过十亿种不同配置的地方)
"version": "0.2.0",
"configurations": [
{
"port": 9229,
"name": "strainer",
"type": "node",
"request": "attach",
"remoteRoot": "/usr/src/app",
"restart": true,
"sourceMaps": false,
"timeout": 99999999
},
]
}
回答如下:当在容器中运行一个节点应用时,必须将其作为一个远程节点进程进行调试。因此,你需要附加到进程中。Chrome让这个过程变得相对简单(一旦设置好了)。我通常的做法是
正常设置我的package.json,比如:
"scripts": {
"start": "node src/index.js"
},
在Docker文件中安装nodemon。
RUN npm install -g [email protected]
最后在docker-compose中。
mynodeapp:
build: ./nodeApp
container_name: mynodemultidb
command: nodemon -L --inspect=0.0.0.0:5858
volumes:
- ./nodeApp:/code
ports:
- "8000:8000"
- "5858:5858"
- "3000:3000"
然后把应用程序用 docker-compose up
在谷歌chrome中打开应用程序,进入 localhost:3000
(或你所暴露的任何端口)打开一个新的标签页并导航到 about:inspect
你的应用程序应该显示在远程目标部分。
点击检查链接.这将打开代码所附的开发工具。
点击页面右侧的源代码链接(上图中index.js:37),打开代码,现在可以根据需要添加断点了。
回到运行应用程序的标签页,并刷新它来激活调试。
更多推荐
用nodemon、dockerfile和docker
发布评论