見出し画像

Hyperledger Fabricを学ぶ(9回目) サンプルネットワークの構築④「Hyperledger Fabricの起動」

こんにちは。

このブログでは、ブロックチェーン関連を中心としたテック系の情報の紹介をしております。

この連載では、オープンソースのブロックチェーンプラットフォーム「Hyperledger Fabric」について、少しずつ勉強を進めてゆきます。

自分なりに公式のドキュメントを噛み砕きながら、分かり易くまとめて行きたいと思います。

今回はいよいよ、Hyperledger Fabricのサンプル「fabcar」を実際に動かしていこうと思います。

Hyperledger Fabricのサンプルのダウンロード

Hyperledger Fabricには公式が提供しているサンプルがあります。

ターミナルに以下のコマンドを入力してサンプルのダウンロードを実行します。

fabric $ git clone https://github.com/hyperledger/fabric-samples.git -b v1.0.6

※自分の環境ではコマンドの先頭に"sudo"をつけて実行する必要がありました。

サンプル「fabcar」のセットアップ

サンプルのダウンロードが完了しましたら、"fabcar"のディレクトリへ移動し、npmコマンドで依存するモジュールのダウンロードを実行します。

cd fabric-samples/fabcar
 
npm install

※npm installはnodeとnpmのバージョンによってエラーが発生したりする様です。
※私の環境では以下のバージョンでエラー発生せずにnpm installが実行できました。

~ $ node -v
v6.9.1
~ $ npm -v
3.10.8

※nodeとnpmのバージョン変更に参考にしたサイトはこちらです。

サンプル「fabcar」の起動

では、いよいよ「fabcar」を動かして行きます。

fabcarディレクトリにある、起動用のスクリプトを実行します。

fabcar$ ./startFabric.sh

実行すると、ターミナルに色々とメッセージが表示されます。

fabcar $ ./startFabric.sh 
# don't rewrite paths for Windows Git Bash users
export MSYS_NO_PATHCONV=1
docker-compose -f docker-compose.yml down
Removing network net_basic
WARNING: Network net_basic not found.
docker-compose -f docker-compose.yml up -d ca.example.com orderer.example.com peer0.org1.example.com couchdb
Creating network "net_basic" with the default driver
Creating couchdb             ... done
Creating orderer.example.com ... done
Creating ca.example.com      ... done
Creating peer0.org1.example.com ... done

(中略)
 
2019-12-01 04:29:49.400 UTC [chaincodeCmd] chaincodeInvokeOrQuery -> INFO 00a Chaincode invoke successful. result: status:200 
2019-12-01 04:29:49.401 UTC [main] main -> INFO 00b Exiting.....

Total setup execution time : 67 secs ...


Start by installing required packages run 'npm install'
Then run 'node enrollAdmin.js', then 'node registerUser'

The 'node invoke.js' will fail until it has been updated with valid arguments
The 'node query.js' may be run at anytime once the user has been registered

上記のメッセージまで表示されれば、fabcarの起動は完了しています。

起動が完了したら、サンプルネットワーク「fabcar」の構成を確認してみます。

ターミナルに以下のコマンドを入力して実行します。

docker ps --format "table {{.Names}}\t{{.Command}}"

Dockerに起動中のコンテナのリストを表示させるコマンドです。

NAMES                                   COMMAND
dev-peer0.org1.example.com-fabcar-1.0   "chaincode -peer.add…"
cli                                     "/bin/bash"
peer0.org1.example.com                  "peer node start"
couchdb                                 "tini -- /docker-ent…"
orderer.example.com                     "orderer"
ca.example.com                          "sh -c 'fabric-ca-se…"

上記の様に、起動しているコンテナの一覧が表示されます。

サンプル「fabcar」は1つの組織、1つの認証局、1つのオーダラー、1つのピア、1つのStateDBという単純な構成にになっています。

構成についての詳細な説明は次回以降に行います。

サンプル「fabcar」の停止

起動したばかりですが、起動したfabcarの停止方法について説明します。

fabcarのデータの参照、データの書き込みは次回以降で説明して行きます。

今、fabcarはサンプルに含まれている「basic-network」というネットワーク上で動作しています。

まず、ネットワークからfabcarをアンインストールする必要があります。

basic-networkというフォルダに移動して、アンインストール用のスクリプトを発行します。

まず、basic-networkディレクトリへ移動します。

fabcar $ cd ../basic-network/

次にbasic-network上で動作しているサンプルをアンインストールするスクリプト「stop.sh」を実行します。

basic-network $ ./stop.sh

実行するとメッセージが表示されます。先ほど起動していたコンテナがシャットダウンされているのが分かります。

# Shut down the Docker containers that might be currently running.
docker-compose -f docker-compose.yml stop
Stopping cli                    ... done
Stopping peer0.org1.example.com ... done
Stopping couchdb                ... done
Stopping orderer.example.com    ... done
Stopping ca.example.com         ... done

次にチェーンコードコンテナを削除するコマンドを実行します。ターミナルに以下のコマンドを入力して実行します。

docker rm $(docker ps -aq -f 'name=dev-*')

最後に「teardown.sh」を実行します。teardown.shはstop.shと同じディレクトリ内に用意されています。

basic-network $ ./teardown.sh
Removing cli                    ... done
Removing peer0.org1.example.com ... done
Removing couchdb                ... done
Removing orderer.example.com    ... done
Removing ca.example.com         ... done
Removing network net_basic
Untagged: dev-peer0.org1.example.com-fabcar-1.0-5c906e402ed29f20260ae42283216aa75549c571e2e380f3615826365d8269ba:latest
Deleted: sha256:61c8f119cab27ddadbdc8fcdd33ed76b5f8d4ea13f2af87abf24feecdff76da5
Deleted: sha256:9bb15bdf543925f3200be6d79d180c17437ad4c55b894f7535afd69d69cd44fd
Deleted: sha256:5ad624960eb2c82504f85d6df074482410b9a6a690494c35ed43e1698f01c087
Deleted: sha256:935465094eda0dd054ab6f5ca3e8517ee4b99e892c6288c3f557e9a7928f678e

先ほどstop.shでシャットダウンしたコンテナが削除されます。

ここまでの作業で、サンプル「fabcar」は完全にネットワークから削除されます。

また、fabcarディレクトリのstartFabric.shでもう一度コンテナの作成から始めることができますので、削除しても問題ありません。

次回以降で、起動したサンプル「fabcar」のデータ参照や、データの書き込みについて説明していこうと思います。

おわり。

この記事が気に入ったらサポートをしてみませんか?