启动在容器中的服务该如何使用ws的debug(20170802)

应用背景

  • 服务器代码运行在某个叫做web-api的容器中,一般的debug方式都是webstorm在某个端口启动web-api的服务(请注意:是webstorm启动了服务)因此导致我们的debug只能针对本地运行的代码。
  • 代码放到容器中运行的时候,由容器直接启动服务,那webstorm把服务停在断点的位置就不能使用原来的dugger机制

新的debug机制

  • nodemon作用
    • 1.启动服务类似于nodenode app.js === nodemon app.js
    • 2.监听代码变化重新启动服务,一旦代码改变立刻重启服务
  • 使用nodemon --inspector=0.0.0.0:5858 app.js
    启动对app.js在5858端口的探测功能,从这个端口可以获取代码运行的信息。
  • 此时,可以在任何地方启动服务的同时,启动nodemon的探测机制,代码运行的相关信息可以通过访问5858端口得知

操作方式

  1. 在容器中启动代码的同时启动nodemon inspector
  2. 需要重新定义docker-compose.yml文件
web-api:
    image: node:8-alpine
    ports:
      - "3000:3000" //这是启动服务的端口
      - "5858:5858" //这是启动nodemon inspector的端口(这个不能忘记暴露,否则代码运行的信息仍然没有办法容器中传出来)
    volumes:
      - ../web-api:/var/app
    command: sh -c "cd /var/app && export NODE_ENV=show-case && node app.js && nodemon --inspector=0.0.0.0:5858 app.js"
    networks:
      main:
        aliases:
          - web-api
  1. 配置你的webstorm debug


    启动在容器中的服务该如何使用ws的debug(20170802)_第1张图片
    image.png
启动在容器中的服务该如何使用ws的debug(20170802)_第2张图片
image.png
启动在容器中的服务该如何使用ws的debug(20170802)_第3张图片
image.png
  1. 启动你的容器docker-compose up -d此时你应该在log中看到如下信息
[nodemon] starting `node --inspect=0.0.0.0:5858 app.js`
Debugger listening on ws://0.0.0.0:5858/3965758c-6153-4c72-a934-2fca911fb8b5
For help see https://nodejs.org/en/docs/inspector
Current environment is: show-case
App started at http://localhost:3000
  1. 接下来点击debug小虫子


    启动在容器中的服务该如何使用ws的debug(20170802)_第4张图片
    run debug
  2. 链接成功后会在服务器的log信息看到
Debugger attached.

你可能感兴趣的:(启动在容器中的服务该如何使用ws的debug(20170802))