1、下載好fabric源碼:
git clone https://github.com/hyperledger/fabric.git
git checkout release-1.4
2、進入fabric目錄
make release
在fabric/release/linux-amd64/bin目錄下就會有編譯好的二進制文件:
3、制作docker鏡像
在fabric目錄下面執行:
make docker
這時會docker會拉取一些必要的鏡像,有的時候拉取很慢,甚至超時導致錯誤,所以在/etc/docker/目錄下面創建文件daemon.json文件,內容為:
{ "registry-mirrors": ["http://hub-mirror.c.163.com"] }
//重啟docker服務
sudo service docker restart
然后重新執行make docker:
3.1遇到的第一個錯誤:counterfeiter
解決方法:
mkdir -p $GOPATH/src/github.com/maxbrunsfeld cd $GOPATH/src/github.com/maxbrunsfeld git clone https://github.com/maxbrunsfeld/counterfeiter.git go install ./counterfeiter/
此時可能又會出現can not find package "golang.org/x/mod/module"的問題
或者cannot find package "golang.org/x/xerrors"
解決方法:
mkdir -p $GOPATH/src/golang.org/x cd $GOPATH/src/golang.org/x git clone https://github.com/golang/mod.git
git clone https://github.com/golang/xerrors.git
然后重新執行:
go install ./counterfeiter/
3.2然后重新執行make docker,會安裝chaintool,在之后又有可能會出現cannot stat '.build/docker/gotools/bin/protoc-gen-go':No such file or directory
解決方法:
在$GOPATH/src目錄下
mkdir $GOPATH/src/golang cd $GOPATH/src/golang git clone https://git.oschina.net/mellymeng/protobuf.git cd protobuf make
此時可能出現的問題是cannot find package "github.com/golang/protobuf/...":
解決方法:
go get -v github.com/golang/protobuf/protoc-gen-go
然后將下載的二進制文件復制到.build/docker/gotools/bin:
cd $GOPATH/bin
cp protoc-gen-go ../src/github.com/hyperledger/fabric/.build/docker/gotools/bin
然后回到fabric目錄,重新執行make docker
3.3docker中apt-get update失敗:
Connection failed
解決方法:
修改/etc/docker/daemon.json文件,重新設置mtu和dns:
{ "dns":["your own dns","8.8.8.8"], "mtu",1400 } //ubuntu中查看自己dns的方式: nmcli device show | grep DNS
4、重新執行make docker
結果如下:
使用docker images查看制作的docker鏡像:
然后就可以使用這些鏡像來搭建fabric網絡了。