运行环境Centos7 64位
1. centos docker 安装
yum -y install docker-io
2. 启动docker服务
启动:service docker start
开机自启动:chkconfig docker on
查看docker版本:docker version
3. .安装容器Compose:
curl -L https://github.com/docker/compose/releases/download/1.11.2/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose
chmod +x /usr/local/bin/docker-compose
查看版本号,如果安装成功会显示版本信息:
docker-compose version
4.docker pull
mkdir /opt/fabric
cd /opt/fabric/
docker pullyeasy/hyperledger-fabric:0.6-dp #拉取镜像
docker tag yeasy/hyperledger-fabric:0.6-dphyperledger/fabric-peer:latest #给镜像加标记
docker tag yeasy/hyperledger-fabric:0.6-dp hyperledger/fabric-baseimage:latest
docker tag yeasy/hyperledger-fabric:0.6-dp hyperledger/fabric-membersrvc:latest
在工作目录下创建docker-compose.yml
内容如下:
membersrvc:
image: hyperledger/fabric-membersrvc
ports:
- "7054:7054"
command: membersrvc
vp0:
image: hyperledger/fabric-peer
ports:
- "7050:7050"
- "7051:7051"
- "7053:7053"
environment:
- CORE_PEER_ADDRESSAUTODETECT=true
- CORE_VM_ENDPOINT=unix:///var/run/docker.sock
- CORE_LOGGING_LEVEL=DEBUG
- CORE_PEER_ID=vp0
- CORE_PEER_PKI_ECA_PADDR=membersrvc:7054
- CORE_PEER_PKI_TCA_PADDR=membersrvc:7054
- CORE_PEER_PKI_TLSCA_PADDR=membersrvc:7054
- CORE_SECURITY_ENABLED=true
- CORE_SECURITY_ENROLLID=test_vp0
- CORE_SECURITY_ENROLLSECRET=MwYpmSRjupbT
links:
- membersrvc
command: sh -c "sleep 5; peer node start --peer-chaincodedev"
运行compose镜像
docker-compose up -d
查看运行的镜像
docker ps
进入docker
docker-compose exec dockername bash
peer chaincode deploy -p github.com/hyperledger/fabric/examples/chaincode/go/chaincode_example02 -c '{"Function":"init", "Args": ["a","100", "b", "200"]}'
(参数注释 -p:指定chaincode源码路径;-c:要执行的JSON格式shaincode代码)
如下图红框中返回了chaincode的名称hash值,就表示区域链已经建立成功了!下面可以通过CLI或POST方式进行测试与验证。
编译代码
cd $GOPATH/src/github.com/hyperledger/fabric/examples/chaincode/go
cp chaincode_example02/chaincode_example02.go $GOPATH/src/ #复制目录里面的例2到$GOPATH/src/ 进行编译
cd $GOPATH/src/
go build ./chaincode_example02.go #编译成功会在GOPATH/src目录生成chaincode_example02文件
(chaincode_example02.go 源码链接https://raw.githubusercontent.com/hyperledger/fabric/master/examples/chaincode/go/chaincode_example02/chaincode_example02.go)
b)发布chaincode在GOPATH/src 下运行
CORE_CHAINCODE_ID_NAME=mycc CORE_PEER_ADDRESS=0.0.0.0:7051 ./chaincode_example02
直至出现“Received REGISTERED”字样,代表成功。
区块链测试:
我用的是火狐浏览器安装的restclient插件
1. 登录
post http://192.168.0.79:7050/registrar
{
"enrollId": "jim",
"enrollSecret": "6avZQLwcUe9b"
}
2. deploy(部署)
post http://192.168.0.79:7050/chaincode
{
"jsonrpc": "2.0",
"method": "deploy",
"params": {
"type": 1,
"chaincodeID":{
"name":" mycc"
},
"ctorMsg": {
"function":"init",
"args":["a", "1000","b", "2000"]
},
"secureContext": "jim"
},
"id": 1
}
3. Invoke(调用)
post http://192.168.0.79:7050/chaincode
{区域信息查询
Rest方式(GET HOST:7050/chain/blocks/1):
HOST:7050/chain/blocks/0 是创世区块
HOST:7050/chain/blocks/1 第一个区块,是depoy部署时建立的
HOST:7050/chain/blocks/2 第二个区块,是invoke调用交易时建立的
在镜像内退出到外面而不关闭镜像:
ctrl+p+q
关闭docker
docker stop dockername
注意:如果以上操作出现莫名其妙的问题,先采用简单粗暴的方法重启宿主机,如果不能解决,在想其他办法。