[英]How to profile nodejs app for memory leaks inside docker container?
[英]Debug nodejs app inside Docker container
我第一次使用Docker設置了一個Nodejs項目,而我在將調試器附加到應用程序時遇到了麻煩。
這是我的docker文件:
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
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關於使用node-inspect運行第二個容器的一些建議,但是我寧願不去那條路,因為我試圖保持簡單。 事實上,這種設置似乎適用於那些教程,為什么它對我不起作用?
提前致謝!
我已多次驗證此配置,無法重現該問題
這是我的整個.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”調試模式。
否則,我很無能為力。 它似乎對我有用。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.