啟動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.nameUnicodeDecodeError: 'ascii' codec can't decode byte 0xe2 in position 0: ordinal not in range(128)
解決方案
1)第一種:這裡我們將Python的預設編碼方式修改為utf-8,就可以規避上述問題的發生,具體方式,我們在Python檔案的前面加上如下代碼:import sysdefaultencoding = 'utf-8'if sys.getdefaultencoding() != defaultencoding: reload(sys) sys.setdefaultencoding(defaultencoding) 2)第二種:我們在/usr/lib/python2.7/site-packages/目錄下添加一個sitecustomize.py檔案,內容如下:import syssys.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 bashError 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
歡迎大家一起加入討論。。。