我第一次使用Docker设置了Nodejs项目,而且我在将调试器附加到应用程序时遇到了问题。
这是我的码头文件:
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运行第二个容器的一些建议,但是我不想走那条路,因为我试图保持简单。事实上,这种设置似乎适用于那些教程,所以为什么它不适用于我?
提前致谢!
答案 0 :(得分:0)
我已多次验证此配置,无法重现问题
这是我的整个.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中的调试模式。
否则,我一无所知。它似乎对我有用。