最新のHyperLederFabricをProxy環境下でビルドする

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を書き換えます。Wgetcurlに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

動いてますね。

やれやれ