2016/06にv0.5-developer-previewが出たfabricですが、現在も日々コードが書き換わりまくっています。
今日落とすと0.7.0がおちてきます。直近のマイルストンは以下のとおり
・2016/10 :アルファ版
・2017/01 :v0.1-ベータ版
・2017/03 :v1.0正式版
製品ソースも変わっていますし、開発環境の構築の中の仕組みも結構変わっているようです。
最新版(0.7.0)をProxy環境下でビルドしたら結構はまったので対処法を記載しておきます。
※Porxyが必要ない環境であれば以下手順でビルドするのは変わっていません。
garapon.hatenablog.com
各種準備
事前準備、fabricのソースのDLまでは以下手順に従い進めましょう。
Windows上にhyperledger/fabricを環境構築する。 - 自分の仕事を憎むには人生は余りにも短い
Vagrantファイルの書き換え
fabric\devenv\Vagrantfile
を修正してProxy設定を入れます。L33の下にこんな風書きます。
Vagrant.configure('2') do |config| if Vagrant.has_plugin?("vagrant-proxyconf") config.proxy.http = "http://proxyserver:8080/" config.proxy.https = "http://proxyserver:8080/" config.proxy.no_proxy = "localhost,127.0.0.1" end
VM起動
cd %GOPATH%\src\github.com\hyperledger\fabric\devenv\ vagrant up
upが終わったらprovisionしていきましょう。
vagrant up --provision
DockerImageのビルド準備
DockerImageをこれからビルドしていくのですが、その中でProxy設定が通らないものがありますので
先にProxy設定をいれていきます。
fabric\images\javaenv\Dockerfile.in
L3とL9を書き換えます。WgetとcurlにProxyを設定します
L3:RUN wget http://services.gradle.org/distributions/gradle-2.12-bin.zip -P /tmp --quiet L9: && curl -fsSL http://apache.osuosl.org/maven/maven-3/$MAVEN_VERSION/binaries/apache-maven-$MAVEN
を
L3:RUN wget -e HTTP_PROXY=http://proxyserver:8080/ http://services.gradle.org/distributions/gradle-2.12-bin.zip -P /tmp --quiet L9: && curl -fsSL -x proxyserver:8080 http://apache.osuosl.org/maven/maven-3/$MAVEN_VERSION/binaries/apache-maven-$MAVEN
とします。
fabric\core\chaincode\shim\java\javabuild.sh
を書き換えます。GradleにProxyをとおします。
gradle -q -b ${PARENTDIR}/core/chaincode/shim/java/build.gradle build
これが
gradle -Dhttp.proxyHost=proxyserver -Dhttp.proxyPort=8080 -Dhttps.proxyHost=proxyserver -Dhttps.proxyPort=8080 -q -b ${PARENTDIR}/core/chaincode/shim/java/build.gradle build
こうなる
これでOK。
おわったら立ち上がったLinuxにログインして作業を進めます。
garapon.hatenablog.com
DockerImageのビルド
さっそくビルドしましょう。
$ cd $GOPATH/src/github.com/hyperledger/fabric $ make peer-image $ make membersrvc-image
確認します。
$ docker images REPOSITORY TAG IMAGE ID CREATED SIZE hyperledger/fabric-membersrvc latest 6e0ad0ce5870 2 hours ago 1.44 GB hyperledger/fabric-membersrvc x86_64-0.7.0-snapshot-42ca84b 6e0ad0ce5870 2 hours ago 1.44 GB hyperledger/fabric-peer latest 6323f96d118c 3 hours ago 1.446 GB hyperledger/fabric-peer x86_64-0.7.0-snapshot-42ca84b 6323f96d118c 3 hours ago 1.446 GB hyperledger/fabric-javaenv latest 484a2c1d472e 3 hours ago 791 MB hyperledger/fabric-javaenv x86_64-0.7.0-snapshot-42ca84b 484a2c1d472e 3 hours ago 791 MB hyperledger/fabric-ccenv latest 12e4b7c10976 3 hours ago 1.439 GB hyperledger/fabric-ccenv x86_64-0.7.0-snapshot-42ca84b 12e4b7c10976 3 hours ago 1.439 GB hyperledger/fabric-src latest 8b4953ed2add 3 hours ago 1.418 GB hyperledger/fabric-src x86_64-0.7.0-snapshot-42ca84b 8b4953ed2add 3 hours ago 1.418 GB
いっぱい出来ましたね。
fabricネットワークの起動
さてきどうしましょう。起動する前に
fabric\bddtests\bdd-docker\docker-compose-4-consensus-batch.yml
を修正します。
L18を
- 7050:7050
と書き直しましょう。これを7050にしておくことでVagrantを起動している外からアクセス可能になります。
書き直したら起動!
$ cd cd $GOPATH/src/github.com/hyperledger/fabric/bddtests/bdd-docker $ docker-compose -f docker-compose-4-consensus-batch.yml up --force-recreate -d
確認してみると
$ docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES a8e67ef73d7c hyperledger/fabric-peer "sh -c 'exec $GOPATH/" 2 hours ago Up 2 hours bdddocker_vp2_1 215ecca8e1a3 hyperledger/fabric-peer "sh -c 'exec $GOPATH/" 2 hours ago Up 2 hours bdddocker_vp1_1 83688e10e2a3 hyperledger/fabric-peer "sh -c 'exec $GOPATH/" 2 hours ago Up 2 hours bdddocker_vp3_1 2e4ba2618554 hyperledger/fabric-peer "sh -c 'exec $GOPATH/" 2 hours ago Up 2 hours 0.0.0.0:7050->7050/tcp bdddocker_vp0_1 d94ead61d86d hyperledger/fabric-membersrvc "membersrvc" 2 hours ago Up 2 hours bdddocker_membersrvc0_1
動いてますね。
やれやれ