美文网首页
如何手动使用ccenv image编译golang的chainc

如何手动使用ccenv image编译golang的chainc

作者: CodingCode | 来源:发表于2020-11-10 02:45 被阅读0次
  1. 准备golang chaincode源文件

本地创建目录:

$ mkdir -p chaincode/input/src      # used for chaincode source files
$ mkdir -p chaincode/output          # generate compile output chaincode

把chaincode所有源文件拷贝到chaincode/input/src目录下面。
后面我们会设置GOPATH=chaincode/input下面,所以这里有一级src的子目录。

以example02为例,最后的目录包含内容:

chaincode/input/src/example02_cc/go/example02_cc.go
  1. 编译
CHAINCODEPATH=<abspath>/chaincode    # here absolute path is required

docker run --rm \
  --volume ${CHAINCODEPATH}:/chaincode \
 fabric-ccenv:latest \
  bash -c 'GOPATH=/chaincode/input:$GOPATH go build  -ldflags "-linkmode external -extldflags '-static'" -o /chaincode/output/chaincode example02_cc/go'

编译成功后,输出结果是:

$ file chaincode/output/chaincode 
chaincode/output/chaincode: ELF 64-bit LSB executable, x86-64, version 1 (GNU/Linux), statically linked, for GNU/Linux 2.6.32, BuildID[sha1]=XXXXXX, not stripped
  1. 生成chaincode image

创建Dockerfile.cc

FROM fabric-baseos:amd64-0.4.15
ADD chaincode/output/chaincode /usr/local/bin         # the chaincode/output/chaincode is output of step 2
LABEL org.hyperledger.fabric.chaincode.id.name="<cc_name>" \  # e.g., example02
     org.hyperledger.fabric.chaincode.id.version="<cc_version>" \    # e.g., v0
     org.hyperledger.fabric.chaincode.type="GOLANG" \
     org.hyperledger.fabric.version="1.4.1" \
     org.hyperledger.fabric.base.version="0.4.15"
ENV CORE_CHAINCODE_BUILDLEVEL=1.4.1

build:

IMAGENAME=dev-04012e29-683a-426b-8361-ff3a7bdffe9c-peer0-example02-v0-9c495ebac36eef760c4320ab27cbd9da77c4d8cda779ef26588b4733b99a5a44

docker build -t ${IMAGENAME}:latest -f Dockerfile.cc .

注意这里IMAGENAME我还没有找到算法是如何生成的,总之fabric能够每次生成的image name都是相同的。

相关文章

网友评论

      本文标题:如何手动使用ccenv image编译golang的chainc

      本文链接:https://www.haomeiwen.com/subject/furdbktx.html