Hyperledger fabric 单机docker cli 启动及查询转账操作

启动Fabric

现在所有文件都已经准备完毕,我们可以启动我们的Fabric网络了。

启动orderer

让我们首先来启动orderer节点,在orderer服务器上运行:

docker-compose -f docker-compose-cli.yaml up 

运行完毕后我们可以使用docker ps看到运行了一个名字为orderer.example.com的节点。

[root@iz2zeivrkckulq2dtidztmz e2e_cli]# docker-compose -f docker-compose-cli.yaml up 
WARNING: The CHANNEL_NAME variable is not set. Defaulting to a blank string.
WARNING: The TIMEOUT variable is not set. Defaulting to a blank string.
Traceback (most recent call last):
  File "/usr/bin/docker-compose", line 11, in <module>
    sys.exit(main())
  File "/usr/lib/python2.7/site-packages/compose/cli/main.py", line 71, in main
    command()
  File "/usr/lib/python2.7/site-packages/compose/cli/main.py", line 124, in perform_command
    handler(command, command_options)
  File "/usr/lib/python2.7/site-packages/compose/cli/main.py", line 959, in up
    start=not no_start
  File "/usr/lib/python2.7/site-packages/compose/project.py", line 449, in up
    include_deps=start_deps)
  File "/usr/lib/python2.7/site-packages/compose/project.py", line 189, in get_services_without_duplicate
    services = self.get_services(service_names, include_deps)
  File "/usr/lib/python2.7/site-packages/compose/project.py", line 177, in get_services
    unsorted = [self.get_service(name) for name in service_names]
  File "/usr/lib/python2.7/site-packages/compose/project.py", line 148, in get_service
    raise NoSuchService(name)
  File "/usr/lib/python2.7/site-packages/compose/project.py", line 690, in __init__
    self.msg = "No such service: %s" % self.name
UnicodeDecodeError: 'ascii' codec can't decode byte 0xe2 in position 0: ordinal not in range(128)

解决方法


1)第一种:这里我们将Python的默认编码方式修改为utf-8,就可以规避上述问题的发生,具体方式,我们在Python文件的前面加上如下代码:

import sys
defaultencoding = 'utf-8'
if sys.getdefaultencoding() != defaultencoding:
    reload(sys)
    sys.setdefaultencoding(defaultencoding)
 2)第二种:我们在/usr/lib/python2.7/site-packages/目录下添加一个sitecustomize.py文件,内容如下:

import sys
sys.setdefaultencoding('utf-8')
 这种方式可以解决所有项目的encoding问题,具体说明可参考/usr/lib/python2.7/site.py文件:


docker-compose -f docker-compose-cli.yaml down



执行命令

docker run -it cli bash
异常:
[root@iz2zeivrkckulq2dtidztmz e2e_cli]# docker exec -it cli bash
Error response from daemon: Container 1f9b6f7d709f263f4a67a67ad91b419b13844efaaa4caeb6dd571bfa829822c7 is not running

解决方法:

cli:
    container_name: cli
...
   working_dir: /opt/gopath/src/github.com/hyperledger/fabric/peer
   # command: /bin/bash -c './scripts/script.sh ${CHANNEL_NAME} ${DELAY}; sleep $TIMEOUT'
    volumes:
        - /var/run/:/host/var/run/
...

注释

command: /bin/bash -c './scripts/script.sh ${CHANNEL_NAME} ${DELAY}; sleep $TIMEOUT'

进入cli执行

./scripts/script.sh mychannel

查询

peer chaincode query -C mychannel -n mycc -c '{"Args":["query","a"]}'


转帐

peer chaincode invoke -o orderer.example.com:7050  --tls true --cafile /opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/ordererOrganizations/example.com/orderers/orderer.example.com/msp/tlscacerts/tlsca.example.com-cert.pem  -C mychannel -n mycc -c '{"Args":["invoke","a","b","20"]}'


查询余额


参考资料


http://hyperledger-fabric.readthedocs.io/en/latest/build_network.html?highlight=e2e

https://www.jianshu.com/p/b34dbb643a70

https://www.cnblogs.com/studyzy/p/7237287.html

https://stackoverflow.com/questions/48196669/hyperledger-fabric-cli-container-errors


欢迎大家一起加入讨论!!!


猜你喜欢

转载自blog.csdn.net/wxb880114/article/details/79674823