hyperledger fabric 1.0.5 分布式部署 (四)
chaincode 的开发
作者在hyperledger fabric 1.0.5 分布式部署 (三)中向读者介绍了如何开发fabric 的chaincode,那么实际上chaincode 还有其他的接口,详细的可以参考 /opt/gopath/src/github.com/hyperledger/fabric/core/chaincode/shim/interfaces.go 接口文件。
另外,用户可以也可以认真学习fabric自带的example 例子 examples/chaincode/go/marbles02/marbles_chaincode.go。
还有一个值得和读者分享的细节是,如果用户希望使用chaincode 的GetQueryResult 接口,那么存储数据的引擎要选择couchdb,而不是leveldb。
选择couchdb 作为存储引擎,区别就是在启动整个网络服务时,执行以下命令
./network_setup.sh up mychannel 10000 couchdb
当然,如果选择了couchdb作为存储引擎,那么在关闭fabric服务时,也应该加入couchdb 的参数
./network_setup.sh down mychannel 10000 couchdb
在其他非root 用户下执行docker 和 docker-compose 的命令,可能会出现以下错误
执行 docker 命令的错误信息
Got permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock: Post http://%2Fvar%2Frun%2Fdocker.sock/v1.29/containers/cli/exec: dial unix /var/run/docker.sock: connect: permission denied
执行 docker-compose 命令的错误信息
ERROR: Couldn't connect to Docker daemon at http+docker://localunixsocket - is it running? If it's at a non-standard location, specify the URL with the DOCKER_HOST environment variable.
解决方法,将当前执行docker 命令的系统用户加入到docker 用户组中,实际上用户在安装docker 软件时,会在操作系统上创建一个docker的 用户组,可以通过/etc/group 文件进行查看
例如作者希望在pgadmin 用户下执行docker-compose 的命令,可以执行(在root 用户下执行)
usermod -aG docker pgadmin
这样用户就可以在pgadmin 上正常执行docker-compose 的命令了。
当然如果用户不怕麻烦,也可以在pgadmin 用户下执行docker-compose 命令前都加上 sudo 关键字,以提高权限等级。