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

CodingCode · · 375 次点击 · · 开始浏览    
这是一个创建于 的文章,其中的信息可能已经有所发展或是发生改变。

  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都是相同的。


有疑问加站长微信联系(非本文作者)

本文来自:简书

感谢作者:CodingCode

查看原文:如何手动使用ccenv image编译golang的chaincode image

入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889

375 次点击  
加入收藏 微博
暂无回复
添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传