前情提要
可能需要修改fabric的peer本身,所以需要看一下fabric本身。
开始
准备
下载很简单,我使用的是v2.3.0。
git clone -b v2.3.0 https://github.com/hyperledger/fabric.git
这样有了代码,然后需要配好go环境。
go我用的是1.15,虽然fabric指定的是1.14,但是不影响。注意环境变量的设置,fabric使用的是MakeFile的批处理命令方式,不是直接用go build。
我遇到过一个问题:go install: cannot install cross-compiled binaries when GOBIN is set
原因是因为要把GOOS=linux,GOARCH=amd64。不能把GOARCH设置为386等其他的,后来从fabric的peer docker镜像中也看到了,现在也只允许amd64的系统。
我用的GoLand打开的项目。
我的编译没遇到太多问题,也不需要把fabric项目放进GOPATH/src。运行了go mod vendor,go mod tidy。打开梯子,该下载的下载,就编译好了,还是很快的。下面是成功结果:
Makefile
看一下makefile,准备开始修改,因为所有的构建规则都放在这里了。
构建总的分为3个文件,总的是Makefile,gotools.mk是go语言构建相关,docker-env.mk是镜像相关。
- makefile 328行
总之是很多的目标,总的来说,主要的就是几部分:native二进制文件,docker镜像,各种检查,文档,辅助函数。
native和docker当然是最重要的。可选的,先不生成镜像,native好像还挺快。
gotools.mk
- gotools.mk 35行
主要都是go的编译需要用到的各种工具,goimports之类的。
docker-env.mk
- docker-env.mk 56行
基本的docker配置,下载 基础镜像需要的代理啥的。
参考
- https://yeasy.gitbook.io/docker_practice/os/alpine
- https://blog.csdn.net/u010230971/article/details/80335613
- https://www.zhihu.com/question/319783573/answer/656033035 GNU是什么