启动在容器中的服务该如何使用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


    image.png
image.png
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小虫子


    run debug
  2. 链接成功后会在服务器的log信息看到
Debugger attached.
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,224评论 19 139
  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 174,244评论 25 709
  • Spring Boot 参考指南 介绍 转载自:https://www.gitbook.com/book/qbgb...
    毛宇鹏阅读 46,997评论 6 342
  • 上一篇文章——知乎核心功能:问答 中写到了知乎对单个提问下回答的排序,采用威尔逊算法。但文中缺少对公式的定量分析解...
    Li_fuxu阅读 8,293评论 4 19
  • 记我的老师林少杰 时间在流逝,透窗的光线默默无声一格一格扫过画案上斑斑点点的羊毛毡,墨香氤氲又夹杂着淡淡的烟草气味...
    半山桃源阅读 883评论 2 3