修改链码后,总要从新部署,这在开发过程中很麻烦。设置开发者模式,就可以比较方便调试修改代码。以fabric-sample的basic-network为事例。
操作系统:centos 7.6
#修改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 ...
已经连接上了
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也能使用。