[英]Can't debug when using `docker-compose run`, but `docker-compose up` works
[英]Can't debug node, with nodemon, dockerfile and docker-compose
我嘗試了很多東西,閱讀了很多文章,有時我的調試甚至無法正常工作,當它運行時,如果我刪除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"
},
在 Dockerfile 中安裝 nodemon:
RUN npm install -g nodemon@1.19.1
最后在 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
應用程序 通過轉到localhost:3000
(或您公開的任何端口)在 Google chrome 中打開應用程序 打開一個新選項卡並導航到about:inspect
您的應用程序應該顯示在遠程目標部分。
單擊檢查鏈接。 這將打開附加到代碼的開發工具。
點擊頁面右側的源代碼鏈接(上圖中的index.js:37)。 這將打開代碼,現在可以根據需要放置斷點
Go 返回運行應用程序的選項卡並刷新它以激活調試。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.