2016-05-25 65 views

回答

5

有兩種選擇:

  1. 如果你不使用泊塢窗圖像,開始您的節點,那麼你應該部署指定一個完全合格的路徑chaincode,換句話說,你應該設置參數當部署:

    -p /home/user/my/awesome/chaincode

  2. 如果你正在運行在一個碼頭工人形象的節點/對等(像你下面設置一個發展網絡指令),那麼你有兩個選擇:

    第一個是把你的chaincode放在路徑$GOPATH/src/github.com/hyperledger/fabric/peer的文件夾裏面。然後你可以建立你的形象(go test -run BuildImage_Peer)。

    現在,碼頭圖像將在其文件系統中具有chaincode(您可以通過使用docker run --rm -it -e CORE_VM_ENDPOINT=http://172.17.0.1:2375 -e CORE_PEER_ID=vp0 -e CORE_PEER_ADDRESSAUTODETECT=true hyperledger-peer /bin/bash在其中導航來檢查它)。

    最後,要部署鏈碼,您必須將路徑(參數-p)設置爲包含鏈碼的文件夾,相對於$GOPATH/src/。此路徑將是:github.com/hyperledger/fabric/peer/yourfolderwiththecc

    第二選項是類似的(尚未測試),但它使用docker和vagrant之間的shared filesystem來訪問chaincode。這個想法是運行docker,像-v local-dev:localdev,這樣docker鏡像中的local-dev文件夾被鏈接到vagrant的local-dev文件夾(你應該放置你的chaincode),並且使用-e GOPATH=/local-dev設置GOPATH,這樣相對路徑可以從/ local-dev文件夾啓動。

觀察:github.com的路徑可能會令人困惑,因爲它似乎是從Github獲取鏈碼,但它只是文件夾名稱。

重要提示:要部署鏈碼,只有一個對等方需要有可用鏈碼文件(發送部署的鏈碼),因爲共識負責廣播鏈碼。

向@ghaskins致謝,感謝他的幫助,瞭解如何做到這一點。

+0

應該指出,$ GOPATH是一個典型的PATH環境變量,可以有多個路徑。因此,如果您使用$ GOPATH/src/github.com/...使用具有多個值的$ GOPATH,您可能無法獲得您期望的結果。 – christo4ferris

0

通常,我把自己的chaincode放在github上。然後:

$ docker run -i -t hyperledger/fabric-peer /bin/bash 

# git clone https://github.com/xxx/myOwnChaincode.git; exit 

$ docker commit -m 'mm' -a 'aa' containerId xxx/fabric-peer 

最後,碼頭圖像「xxx/fabric-peer」包含自編程鏈接碼。 對於所有這些步驟,我寫了一個shell腳本,它對我來說工作得很好。

相關問題