Docker运行nodejs及调试

一.添加Dockerfile文件

首先在项目根目录下添加Dockerfile文件(这里我选用的是简单地nestjs作为例子)

FROM node:8.10.0

# set working directory
#     move to app folder
WORKDIR /nest

# add `/usr/src/app/node_modules/.bin` to $PATH
ENV PATH /nest/node_modules/.bin:$PATH

EXPOSE 3000

二.添加docker-compose.yml

在项目根目录下添加docker-compose.yml

version: '3'

services:
  nest:
    build: .
    volumes:
      - .:/nest
    ports:
      - 3000:3000
      - 9229:9229 # 把docker中nodejs调试端口映射到本地调试端口
    tty: true
    command: yarn debug

三.添加nodemon配置

在项目根目录下添加nodemon-docker-debug.json

{
    "watch": [
        "src"
    ],
    "ext": "ts",
    "ignore": [
        "src/**/*.spec.ts"
    ],
    "exec": "tsc && node --inspect=0.0.0.0:9229 ./dist/src/main.js"
}

四.添加运行script

在package.json中加入docker运行命定及nodejs debug命定

    "docker": "docker-compose build && docker-compose up -d",
    "debug": "nodemon -L --config nodemon-docker-debug.json",

五. 构建docker

1.首先运行yarn docker(npm run docker)来构建及运行docker 容器

Screen Shot 2019-05-22 at 11.53.04 PM.png

2.当执行完后,可以使用docker logs -f [containerId] 来查件日志, 看看是否运行成功
Screen Shot 2019-05-22 at 11.58.32 PM.png

3.在浏览器中输入http://localhost:3000 可以看到请求成功, 说明项目已经成功在docker中运行

五. 配置vscode debug(以vscode为例)

1.项目根目录下新建.vscode文件夹,在.vscode文件夹下添加launch.json

{
  "version": "0.2.0",
  "configurations": [
    {
      "name": "Docker: Attach to Node",
      "type": "node",
      "request": "attach",
      "port": 9229,
      "address": "localhost",
      "localRoot": "${workspaceFolder}",
      "remoteRoot": "/nest",
      "protocol": "inspector",
      "restart": true
    }
  ]
}

*注意这里的port一定要与你docker-compose.yml设置的debug port保持一致

六.开启调试

运行vscode调试工具,如果能够成功连接到docker中的程序,可以在container logs 中看到连接成功的log


Screen Shot 2019-05-23 at 12.09.20 AM.png

接下来尝试断点调试


Screen Shot 2019-05-23 at 12.11.13 AM.png

成功!!!

原文链接http://watsonzuo.com/2019/05/22/docker-nodejs-debug/

你可能感兴趣的:(Docker运行nodejs及调试)