用主机上的visual code调试docker下的hfc应用

上篇说到:fabric官方提供了docker镜像starter,运行一个nodejs写的hfc(Hyperledger Fabric Client)示例程序,但是在docker下缺少写代码和调试代码的手段,本篇的目的在于解决这个问题。
我们要在docker下的nodejs和主机下的visual studio code之间暗通款曲,使得vsc能够方便地调试docker下的hfc程序。

下面简单介绍下登场的角色:

  • visual studio code
    老牌IDE厂商微软力捧的新人(简称vsc),开源ide。用来做nodejs开发,响应速度甩eclipse几条街。
    vsc内置了通过端口对nodejs的Remote调试,可以在launch.json 文件配置。参考这篇文章
  • nodejs。(注意:fabric提供的hfc环境并不支持es6,我们仅仅用普通nodejs方式就好
    前端网红,自从通过AMD、CMD模块化之后,javascript也有了头领的交椅,不再是小喽啰。
    nodejs内置了允许通过端口进行调试

解决问题的思路

  • Step 1:按照fabric的教程,在共享卷mytest目录下,能够node app.js正常运行;
  • Step 2:通过修改docker-compose.yml开放docker相应的端口;
  • Step 3:在vsc中配置好launch.json 文件;
  • Step 4:验证。

在共享卷mytest下运行hfc示例

starter的docker-compose.yml中有这么一段:

starter:
  container_name: starter
  image: hyperledger/fabric-starter-kit
  volumes:
    # tweak this to map a local developmnt directory tree into the container
    - ~/mytest:/user/mytest

它定义了将主机上的~/mytest映射到镜像下的/user/mytest目录。
docker-compose up启动镜像之后,在终端下通过docker exec -it starter /bin/bash进入镜像后,需要到/user/mytest目录下执行两条命令准备运行环境:
npm install /opt/gopath/src/github.com/hyperledger/fabric/sdk/node
npm install hfc
然后运行node app.js,结果如下:

用主机上的visual code调试docker下的hfc应用_第1张图片
node app.js运行结果

开放docker相应的端口

在starter的docker-compose.yml中增加两行开放5858端口,代码如下:

starter:
  container_name: starter
  image: hyperledger/fabric-starter-kit
  volumes:
    # tweak this to map a local developmnt directory tree into the container
    - ~/mytest:/user/mytest
  ports:
    - "5858:5858"

运行docker-compose down之后运行docker-compose up,端口开放生效。

在vsc中配置launch.json 文件

在主机安装vsc之后,打开本机的~/mytest目录,在vsc自动生成的launch.json 文件基础上修改如下:

{
    "version": "0.2.0",
    "configurations": [
        {
            "type": "node",
            "request": "launch",
            "name": "启动程序",
            "program": "${workspaceRoot}/index.js",
            "cwd": "${workspaceRoot}"
        },
        {
            "type": "node",
            "request": "attach",
            "name": "附加到进程",
            "port": 5858,
            "address": "localhost",
            "restart": false,
            "sourceMaps": false,
            "outDir": null,
            "localRoot": "${workspaceRoot}/",
            "remoteRoot": "/user/mytest/"
      }
    ]
}

我们真正用到的是这个配置中的attach部分,它在nodejs进程运行起来之后,通过5858端口对其进行debug。

验证

  • 在docker镜像下,在/user/mytest/ 目录下,执行node --debug-brk app.js,以单行debug运行hfc示例
单行debug运行hfc示例
  • 在vsc下,以attach方式进入debug,界面停在首行,调试模式完成。
用主机上的visual code调试docker下的hfc应用_第2张图片
vsc下调试

你可能感兴趣的:(用主机上的visual code调试docker下的hfc应用)