编译fabric源码,并且制作docker镜像

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网络了。

    

猜你喜欢

转载自www.cnblogs.com/gyyyl/p/12624161.html