美文网首页
用主机上的visual code调试docker下的hfc应用

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

作者: chen4w | 来源:发表于2017-01-17 13:55 被阅读0次

    上篇说到: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,结果如下:

    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,界面停在首行,调试模式完成。
    vsc下调试

    相关文章

      网友评论

          本文标题:用主机上的visual code调试docker下的hfc应用

          本文链接:https://www.haomeiwen.com/subject/mtymbttx.html