运行环境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方式进行测试与验证。

image

编译代码

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

image

b)发布chaincode在GOPATH/src 下运行

CORE_CHAINCODE_ID_NAME=mycc CORE_PEER_ADDRESS=0.0.0.0:7051 ./chaincode_example02

image

直至出现“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

{
  "jsonrpc": "2.0",
  "method": "invoke",
  "params": {
    "type": 1,
    "chaincodeID": {
      "name": "mycc"
    },
    "ctorMsg": {
      "function": "invoke",
      "args": [
        "a",
        "b",
        "100"
      ]
    },
    "secureContext": "jim"
  },
  "id": 3
}

区域信息查询

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


 

注意:如果以上操作出现莫名其妙的问题,先采用简单粗暴的方法重启宿主机,如果不能解决,在想其他办法。

Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐