修改鍊碼後,總要從新部署,這在開發過程中很麻煩。設定開發者模式,就可以比較友善調試修改代碼。以fabric-sample的basic-network為事例。
作業系統:centos 7.6
- 修改docker-compose.yml
#修改peer節點,啟動時候開啟開發者模式
#command: peer node start
command: peer node start --peer-chaincodedev=true
#修改peer節點的端口映射,添加7052端口
port:
- 7052:7052
這個端口就是我們在本地啟動chaincode連接配接peer節點時使用的端口,
可以通過 config/core.yaml 修改預設端口。
- 跑啟動腳本
./start.sh
腳本幫我們啟動了docker容器,建立channel,并把peer節點加入到channel。
- 設定環境變量,編譯鍊碼
cd fabric-samples/chaincode/chaincode_example02/go
# .env檔案位于鍊碼目錄下,作為全局環境配置檔案
# CORE_PEER_ADDRESS=peer:7052
echo 'export CORE_PEER_ADDRESS=127.0.0.1:7052' >> .env
# CORE_CHAINCODE_ID_NAME=chaincodeName:chaincodeVersion
echo 'export CORE_CHAINCODE_ID_NAME=mycc:1.0' >> .env
. .env
go run .
輸出結果
2019-02-07 20:55:49.076 CST [shim] setupChaincodeLogging -> INFO 001 Chaincode log level not provided; defaulting to: INFO
2019-02-07 20:55:49.076 CST [shim] setupChaincodeLogging -> INFO 002 Chaincode (build level: ) starting up ...
已經連接配接上了
- 啟動容器cli,進入容器
docker-compose -f docker-compose.yml up -d cli
docker exec -it cli /bin/bash
- 安裝鍊碼,初始化鍊碼,調用鍊碼
peer chaincode install -n mycc -v 1.0 -p github.com/chaincode_example02/go
peer chaincode instantiate -o orderer.example.com:7050 -C mychannel -n mycc -v 1.0 -c '{"Args":["init", "a", "100", "b", "200"]}' -P "OR ('Org1MSP.member','Org2MSP.member')"
peer chaincode invoke -o orderer.example.com:7050 -C mychannel -n mycc -c '{"Args":["invoke","a","b","10"]}'
在 go run . 的視窗,發現了fmt.Print的資訊。
ex02 Init
Aval = 100, Bval = 200
ex02 Invoke
Aval = 90, Bval = 210
Ctrl-c,修改鍊碼,再go run .
發現修改後的代碼也能跑。甚至go的dlv也能使用。