WebStorm 2018.1:我无法从 docker 容器命中断点 运行 远程调试打字稿
WebStorm 2018.1: I am not able to hit breakpoints running remote debugging typescript from docker container
我正在使用 docker 集成工具 运行 docker-compose 来启动两个容器,一个用于节点,一个用于 mongodb。
这里是 docker-compose.yml 文件:
version: '2.1'
services:
mongo:
container_name: "app_mongo"
hostname: "mongo"
tty: true
image: mongo:latest
environment:
- MONGO_DATA_DIR=/data/db
- MONGO_LOG_DIR=/dev/null
- MONGO_INITDB_DATABASE=***********
- MONGO_INITDB_ROOT_USERNAME=************
- MONGO_INITDB_ROOT_PASSWORD=********************
volumes:
- /data/db:/data/db
ports:
- 27017:27017
command: "mongod --smallfiles --auth"
networks:
- my-app-network
group:
container_name: "app_api1"
hostname: "api1"
build:
context: .
dockerfile: api1.dev.yml
entrypoint: ["npm", "run", "debug"]
volumes:
- ".:/home/app"
ports:
- 3000:3000
- 56745:56745
depends_on:
- "mongo"
networks:
- my-app-network
networks:
my-app-network:
driver: bridge
这是 api1.dev.yml 文件:
FROM node:latest
ADD package.json /tmp/package.json
RUN cd /tmp && npm install --production && npm install -g nodemon
RUN mkdir -p /home/app && cp -a /tmp/node_modules /home/app/ && mkdir -p /home/app/dist
ADD package.json /home/app/package.json
ADD .env /home/app/.env
WORKDIR /home/app
这是 package.json 中的脚本条目:
"scripts": {
"debug": "nodemon --inspect=56745 --require ts-node/register app/app.ts"
// "debug": "nodemon -L --inspect=56745 dist/myapp/app.js"
}
我还添加了一个新的 "Attach to Node.js/Chrome" 项目以附加到节点的调试端口。
我 运行 docker-compose 文件,然后在节点启动并侦听后调试 "Attach to Node.js/Chrome" 项目。
当我尝试在 .ts 文件中设置断点时,没有任何反应。我看到端点被调用了。
从 docker 调试打字稿应用程序涉及哪些步骤,我做错了什么?
我在哪里可以找到一个很好的教程来指导如何调试托管在 docker 容器中的 node.js 应用程序的打字稿?
终于给我答案了。最终,我不得不将调试脚本从 "debug": "nodemon -L --inspect=56745 dist/myapp/app.js" 更改为 "nodemon -L --inspect=0.0.0.0:56745 dist/myapp/app.js".
我正在使用 docker 集成工具 运行 docker-compose 来启动两个容器,一个用于节点,一个用于 mongodb。
这里是 docker-compose.yml 文件:
version: '2.1'
services:
mongo:
container_name: "app_mongo"
hostname: "mongo"
tty: true
image: mongo:latest
environment:
- MONGO_DATA_DIR=/data/db
- MONGO_LOG_DIR=/dev/null
- MONGO_INITDB_DATABASE=***********
- MONGO_INITDB_ROOT_USERNAME=************
- MONGO_INITDB_ROOT_PASSWORD=********************
volumes:
- /data/db:/data/db
ports:
- 27017:27017
command: "mongod --smallfiles --auth"
networks:
- my-app-network
group:
container_name: "app_api1"
hostname: "api1"
build:
context: .
dockerfile: api1.dev.yml
entrypoint: ["npm", "run", "debug"]
volumes:
- ".:/home/app"
ports:
- 3000:3000
- 56745:56745
depends_on:
- "mongo"
networks:
- my-app-network
networks:
my-app-network:
driver: bridge
这是 api1.dev.yml 文件:
FROM node:latest
ADD package.json /tmp/package.json
RUN cd /tmp && npm install --production && npm install -g nodemon
RUN mkdir -p /home/app && cp -a /tmp/node_modules /home/app/ && mkdir -p /home/app/dist
ADD package.json /home/app/package.json
ADD .env /home/app/.env
WORKDIR /home/app
这是 package.json 中的脚本条目:
"scripts": {
"debug": "nodemon --inspect=56745 --require ts-node/register app/app.ts"
// "debug": "nodemon -L --inspect=56745 dist/myapp/app.js"
}
我还添加了一个新的 "Attach to Node.js/Chrome" 项目以附加到节点的调试端口。
我 运行 docker-compose 文件,然后在节点启动并侦听后调试 "Attach to Node.js/Chrome" 项目。
当我尝试在 .ts 文件中设置断点时,没有任何反应。我看到端点被调用了。
从 docker 调试打字稿应用程序涉及哪些步骤,我做错了什么?
我在哪里可以找到一个很好的教程来指导如何调试托管在 docker 容器中的 node.js 应用程序的打字稿?
终于给我答案了。最终,我不得不将调试脚本从 "debug": "nodemon -L --inspect=56745 dist/myapp/app.js" 更改为 "nodemon -L --inspect=0.0.0.0:56745 dist/myapp/app.js".