启动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
欢迎大家一起加入讨论!!!