Fabric 1.4国密单机部署并测试
主要用来记录安装的辛酸历程,希望后面的人不用花这么多时间去找报错
感谢这篇的大佬,主要参考:https://blog.csdn.net/weixin_39430411/article/details/107939859
目录
一、系统环境
系统版本 : Ubuntu 22.04.2 LTS
环境变量
go version # go version go1.17.5 linux/amd64
docker version # Version:20.10.21
docker-compose version # version 1.27.4
git version # git version 2.34.1
二、下载源码
1、创建目录
mkdir -p $GOPATH/src/github.com/hyperledger
2、下载
注意,项目的目录结构一定是这样的
cd $GOPATH/src/github.com/hyperledger
git clone https://github.com/dddengyunjie/fabric
三、安装依赖
1、golang.org/x 下的依赖
这里需要下载如下两个库:
mkdir -p $GOPATH/src/golang.org/x
cd $GOPATH/src/golang.org/x
git clone https://github.com/golang/crypto.git -b internal-branch.go1.17-vendor
git clone https://github.com/golang/sys.git -b internal-branch.go1.17-vendor
2、构建protoc-gen-go工具
cd $GOPATH/src
mkdir golang
cd golang
git clone https://github.com/golang/protobuf.git
cd protobuf/protoc-gen-go/
go build
go install
ls $GOPATH/bin
3、构建mockery工具(后续好像没有用到)
mkdir -p $GOPATH/src/github.com/vektra
cd $GOPATH/src/github.com/vektra
git clone --branch v1.1.2 https://github.com/vektra/mockery.git
cd mockery/cmd/mockery
go install mockery.go
ls $GOPATH/bin
四、替换源码中脚本中失效url
1、Makefile
切换到工程目录
cd $GOPATH/src/github.com/hyperledger/fabric
vim Makefile
需要将CHAINTOOL_URL的值替换为:
https://hyperledger.jfrog.io/hyperledger/fabric-maven/org/hyperledger/fabric-chaintool/$(CHAINTOOL_RELEASE)/fabric-chaintool-$(CHAINTOOL_RELEASE).jar
2、gotools.mk
将go.fqp.mockery := github.com/vektra/mockery/cmd/mockery
这一行改为go.fqp.mockery := github.com/vektra/mockery/cmd
3、images/tools/Dockerfile.in
需要在apt-get前面添加这一句话,不然他在install的时候发起对话,但是你没法响应会报错
ENV DEBIAN_FRONTEND noninteractive
五、编译二进制文件
chmod +x scripts/*.sh
make release
如果缺包的话,就按照上面的crypto和sys的方式添加就好
六、编译镜像
make docker
如果提示缺少包的话,可以从之前下载的里面复制
mkdir -p vendor/golang.org/x/crypto/internal/
cp -r $GOPATH/src/golang.org/x/crypto/chacha20poly1305 vendor/golang.org/x/crypto/
cp -r $GOPATH/src/golang.org/x/crypto/curve25519 vendor/golang.org/x/crypto/
cp -r $GOPATH/src/golang.org/x/crypto/chacha20 vendor/golang.org/x/crypto/
cp -r $GOPATH/src/golang.org/x/crypto/internal/subtle vendor/golang.org/x/crypto/internal/
cp -r $GOPATH/src/golang.org/x/crypto/poly1305 vendor/golang.org/x/crypto/
cp -r $GOPATH/src/golang.org/x/sys/cpu vendor/golang.org/x/sys/
然后会依次构建peer-image
和order-image
,但是会在构建gotools工具的时候失败,不用管他
重点!!!
将之前构建的protoc-gen-go复制到.build/docker/gotools/bin/
中(如果前面的都是正确无误的话,会生成.build文件夹)
然后从https://gitee.com/TianCaoJiangLin/gotools-bin中复制大佬的chaintool到.build/docker/gotools/bin/
中继续执行
make docker
问题
如果没有科学上网的话,可能这里的下载会失败,那么我这边是采用了科学上网的方式,配置https的代理,但是记得取消http的代理,不然后面可能失败
unset http_proxy
七、下载fabric-sample并进行测试
直接参考之前提到的博客就好
八、镜像构建结果
REPOSITORY TAG IMAGE ID CREATED SIZE
hyperledger/fabric-tools amd64-1.4.2-snapshot-2d9b6e2 aa7c67c582ac 44 seconds ago 1.56GB
hyperledger/fabric-tools amd64-latest aa7c67c582ac 44 seconds ago 1.56GB
hyperledger/fabric-tools latest aa7c67c582ac 44 seconds ago 1.56GB
hyperledger/fabric-buildenv amd64-1.4.2-snapshot-2d9b6e2 00348cf627cf 3 minutes ago 1.42GB
hyperledger/fabric-buildenv amd64-latest 00348cf627cf 3 minutes ago 1.42GB
hyperledger/fabric-buildenv latest 00348cf627cf 3 minutes ago 1.42GB
hyperledger/fabric-ccenv amd64-1.4.2-snapshot-2d9b6e2 24f639c52762 3 minutes ago 1.43GB
hyperledger/fabric-ccenv amd64-latest 24f639c52762 3 minutes ago 1.43GB
hyperledger/fabric-ccenv latest 24f639c52762 3 minutes ago 1.43GB
hyperledger/fabric-orderer amd64-1.4.2-snapshot-2d9b6e2 52e6084ab944 4 minutes ago 174MB
hyperledger/fabric-orderer amd64-latest 52e6084ab944 4 minutes ago 174MB
hyperledger/fabric-orderer latest 52e6084ab944 4 minutes ago 174MB
hyperledger/fabric-peer amd64-1.4.2-snapshot-2d9b6e2 65f6428cf7d4 4 minutes ago 179MB
hyperledger/fabric-peer amd64-latest 65f6428cf7d4 4 minutes ago 179MB
hyperledger/fabric-peer latest 65f6428cf7d4 4 minutes ago 179MB
alpine 3.14 9e179bacf43c 11 days ago 5.61MB
hyperledger/fabric-baseimage amd64-0.4.15 c4c532c23a50 4 years ago 1.39GB
hyperledger/fabric-baseos amd64-0.4.15 9d6ec11c60ff 4 years ago 145MB