HyperledgerプロジェクトのHyperledger fabricは、バイナリをダウンロードしてつかうことができます。
ここでは、OSSとしてソースが公開されているのだから、あるいは、とにかく最新の状況に追随したいなどの理由があるかと思いますが、せっかくですからソースからビルドしてみたいと思います。
1. Hyperledger fabricのビルド
GithubのリポジトリをみてもHyperledger fabric関連のものが10以上公開されています。ここでは、まずfabric-baseimage
をビルドして開発用のコンテナを作成し、fabric-baseimage
を使用してfabric-ca
とfabric
をビルドしていきます。
2. fabric-baseimageのビルド
最初に、以下の手順でfabric-baseimage
をビルドします。準備としてfabricの開発に利用されているGo
をインストール済みで環境変数も設定されているものとします。
ここでは、Go 1.9.1をインストールして、以下の設定となっています。
GOPATH=/usr/local
GOROOT=/usr/local/go
それでは、始めましょう。
cd /usr/local
mkdir -p github.com/hyperledger
cd github.com/hyperledger
git clone https://github.com/hyperledger/fabric-baseimage.git
現在のリリースをタグで確認してみます。
cd fabric-baseimage
git tag
...
v0.4.2
現時点(2017/10/14)では、v0.4.2 までリリースされています。
クローンしたディレクトリで、タグをv0.4.2にして実際にビルドしてみます。
git checkout refs/tags/v0.4.2
make
ここで、Makefile
を見るとv0.4.2
にしていますからIS_REELEASE=true
ですが、マスターブランチの場合以下となっています。
VERSION ?= 0.4.3
IS_RELEASE=false
この状態でビルドすると、v0.4.3
のスナップショットが作成されるようになっています。ここでは、v0.4.2
でビルドしてみます。
$ docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
hyperledger/fabric-baseimage armv7l-0.4.2 33ebe04e2ec2 12 hours ago 1.15GB
hyperledger/fabric-baseimage latest 33ebe04e2ec2 12 hours ago 1.15GB
hyperledger/fabric-basejvm armv7l-0.4.2 9e1e5e3400b1 15 hours ago 456MB
hyperledger/fabric-basejvm latest 9e1e5e3400b1 15 hours ago 456MB
hyperledger/fabric-baseos armv7l-0.4.2 fe695ff1313f 15 hours ago 171MB
hyperledger/fabric-baseos latest fe695ff1313f 15 hours ago 171MB
armv7/armhf-ubuntu latest 4d7ccbc584c8 11 months ago 122MB
そう、Raspberry Pi
でビルドしていますが、私の環境では3時間弱
でした(クラウドでは30分弱)。
3. fabric-caのビルド
続けてfabric-ca
をビルドしてみます。
cd /usr/local/src/github.com/hyperledger
git clone https://github.com/hyperledger/fabric-ca.git
cd fabric-ca
git tag
git checkout refs/tags/v1.0.3
クローンしてタグを見ると現時点(2017/10/14)ではv1.0.3
がリリースされていましたので、このバージョンにしています。
ところがMakefile
のBASEIMAGE_RELEASE
を見ると0.3.1
ですから、fabric-baseimage
とはバージョンの整合が取れていないようです。ここは、fabric-baseimage
を0.3.1
にしても良いのですが、Makefile
を修正して0.4.2
でビルドしちゃいましょう。
$ vi Makefile
BASEIMAKE_RELEASE = 0.4.2
$ make docker
ビルドできると、次のようにコンテナが作成されます。私の環境では、約8分
ほど(クラウドでは2分弱)でビルドできました。
$ docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
hyperledger/fabric-ca armv7l-1.0.3 7fa1e410181c 6 minutes ago 240MB
hyperledger/fabric-ca latest 7fa1e410181c 6 minutes ago 240MB
4. fabricのビルド
最後にfabric
をビルドします。
cd /usr/local/src/github.com/hyperledger
git clone https://github.com/hyperledger/fabric.git
cd fabric
git tag
git checkout refs/tags/v1.0.3
fabric
も現在(2017/10/14)の最新のタグでビルドしてみます。fabric-ca
と同様にというか、こちらはbaseimage
として0.3.2
を使用しているようですから修正して0.4.2
でビルドすることにします。
$ vi .baseimage-release
0.4.2
$ make docker
ビルドできると、以下のように沢山のコンテナが作成されます。私の環境では、約28分
(クラウドでは7分弱)でした。
$ docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
hyperledger/fabric-tools armv7l-1.0.3 23b8093b375e 4 minutes ago 1.21GB
hyperledger/fabric-tools latest 23b8093b375e 4 minutes ago 1.21GB
hyperledger/fabric-couchdb armv7l-1.0.3 6df83554f29a 7 minutes ago 1.37GB
hyperledger/fabric-couchdb latest 6df83554f29a 7 minutes ago 1.37GB
hyperledger/fabric-kafka armv7l-1.0.3 cd4eb25a856d 18 minutes ago 1.18GB
hyperledger/fabric-kafka latest cd4eb25a856d 18 minutes ago 1.18GB
hyperledger/fabric-zookeeper armv7l-1.0.3 0fdf2dcbdf9c 19 minutes ago 1.2GB
hyperledger/fabric-zookeeper latest 0fdf2dcbdf9c 19 minutes ago 1.2GB
hyperledger/fabric-testenv armv7l-1.0.3 b9d161f73949 20 minutes ago 1.28GB
hyperledger/fabric-testenv latest b9d161f73949 20 minutes ago 1.28GB
hyperledger/fabric-buildenv armv7l-1.0.3 5850e536d9df 24 minutes ago 1.2GB
hyperledger/fabric-buildenv latest 5850e536d9df 24 minutes ago 1.2GB
hyperledger/fabric-orderer armv7l-1.0.3 1f93ac8b56ad 25 minutes ago 190MB
hyperledger/fabric-orderer latest 1f93ac8b56ad 25 minutes ago 190MB
hyperledger/fabric-peer armv7l-1.0.3 4ec6198cf40e 26 minutes ago 193MB
hyperledger/fabric-peer latest 4ec6198cf40e 26 minutes ago 193MB
hyperledger/fabric-javaenv armv7l-1.0.3 82fecd854b30 27 minutes ago 1.26GB
hyperledger/fabric-javaenv latest 82fecd854b30 27 minutes ago 1.26GB
hyperledger/fabric-ccenv armv7l-1.0.3 cbe8d829188d 28 minutes ago 1.18GB
hyperledger/fabric-ccenv latest cbe8d829188d 28 minutes ago 1.18GB
5. fabric-samplesを動かす
一通りビルドできたら、Hyperledger fabric 1.0.1 をドキュメント通りに動かすの手順で動かしてみます。
今までと同様にタグを見るとv1.0.2
になっていますので、これを使用してみます。
cd /usr/local/src/github.com/hyperledger
git clone https:/github.com/hyperledger/fabric-samples.git
cd fabric-samples
git tag
git checkout refs/tags/v1.0.2
後は、上記のページのように実行してみます。Raspberry Pi
を使用しても、無事に実行できているようです。
__(おまけ)__fabricのバージョンがあがっているためか、上記のページを書いた頃よりも倍以上速くなっているようでした。