Docker部署区块链

来源:互联网 发布:淘宝待发货 编辑:程序博客网 时间:2024/06/08 04:34

1. 打开Docker拉取镜像,在https://hub.docker.com/可以查看镜像版本,为了配合毕设我们拉取0.6版本,并把tag重命名为latest

docker pull hyperledger/ fabric-peer:x86_64-0.6.1-preview

docker pull hyperledger/ fabric-membersrvc:latest

docker images

 

 

 

2. 将编写好的docker-compose.yml保存到本地c/Users/rjy以便后续运行使用

membersrvc:  image: hyperledger/fabric-membersrvc  ports:    - "7054:7054"  command: membersrvcvp0:  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"

3. docker输入docker-compose up

 

4. mRemoteNG链接Docker,

Host : 192.168.99.100

User name : docker

Password : tcuser

协议 : SSHv2

 

5. mRemoteNG输入docker ps

 

6. mRemoteNG输入docker exec -it rjy_vp0_1 bash

7. 退回到.../github.com新建一个SaveState文件夹 mkdir SaveState

8. 进入SaveState,输入vi SaveState2.go新建一个SaveState.go文件

9. 按下i键,从下面复制代码,在mRemoteNG点击右键粘贴过来

package main import (    "errors"    "fmt"         "github.com/hyperledger/fabric/core/chaincode/shim")  type SaveState2Chaincode struct {} func (t *SaveState2Chaincode) Init(stub shim.ChaincodeStubInterface, function string, args []string) ([]byte, error) {    fmt.Printf("Init called with function %s!\n", function)     return nil, nil} func (t *SaveState2Chaincode) Invoke(stub shim.ChaincodeStubInterface, function string, args []string) ([]byte, error) {    fmt.Printf("Invoke called with function %s!\n", function)     var key, value string    key = args[0]    value = args[1]     var err error    err = stub.PutState(key, []byte(value))     if err != nil {        return nil, err    }    return nil, nil    }  func (t *SaveState2Chaincode) Query(stub shim.ChaincodeStubInterface, function string, args []string) ([]byte, error) {    fmt.Printf("Query called with function %s!\n", function)     var key string    key = args[0]     valInBytes, err := stub.GetState(key)     if err != nil {        return nil, errors.New("Failed to get state for " + key)    }     message := "State for "  + key + " = " + string(valInBytes)     return []byte(message), nil} func main() {    err := shim.Start(new(SaveState2Chaincode))    if err != nil {        fmt.Printf("Error starting Save State chaincode: %s", err)    }}

10. :wq

11. go build ./   注意build后边有一个空格,运行完这一句会出现一个绿色的文件

 

12. export CORE_CHAINCODE_ID_NAME=mycc

13. export CORE_PEER_ADDRESS=0.0.0.0:7051

14. ./SaveState &

 

15. 向Hyperledger服务接口http://192.168.99.100:7050/registrar 发送如下REST请求,使用内置的jim用户登录系统

{

 "enrollId": "jim",

    "enrollSecret": "6avZQLwcUe9b"

}

16. 向Hyperledger服务接口http://192.168.99.100:7050/chaincode 发送如下REST请求

{

   "jsonrpc" : "2.0",

"method" : "invoke",

"params" : {

"type" : 1,

"chaincodeID" : {

"name" : "mycc"

},

"ctorMsg" : {

"function":"invoke",

"args":[ "testKey","PipiXia,Let’s go!" ]

},

"secureContext" : "jim"

},

"id" : 3

 }  

 

17. 

{

    "jsonrpc" : "2.0",

"method" : "query",

"params" : {

"type" : 1,

"chaincodeID" : {

"name" : "mycc"

},

"ctorMsg" : {

"function":"query",

"args":[ "testKey"]

},

"secureContext" : "jim"

},

"id" : 5

 }  

 

 

阅读全文
0 0
原创粉丝点击