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

2017-01-17  本文已影响0人  chen4w

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

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

解决问题的思路

在共享卷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。

验证

单行debug运行hfc示例 vsc下调试
上一篇下一篇

猜你喜欢

热点阅读