1. 构建golang环境

## 直接下载包 安装即可wget https://studygolang.com/dl/golang/go1.16.10.linux-arm64.tar.gz
## 具体安装不陈述了 设置环境变量 source *** 更新一下

2. 构建fabric-ca

make fabric-ca-clientmake fabric-ca-server

3. 构建fabric

make configtxgen
make configtxlator
make orderer
make peer

4. 构建chaincode

如果是自己的链码且要非docker的本地部署,需要重新在arm64环境编译一下

5. 部署区块网络

5.1 非docker本地

## 把以上编译二进制文件拷贝bin中## 其他注意本地native部署配置环境等等就行

5.2 docker

5.2.1 适配docker

 ##可以找到包进行安装wget https://download.docker.com/linux/debian/dists/stretch/pool/stable/arm64/docker-ce_18.06.3~ce~3-0~debian_arm64.debdpkg -i docker-ce_18.06.3~ce~3-0~debian_arm64.deb

5.2.2 适配docker-compose

##1. 安装python3.5以上版本
## 2. pip升级 有需求可以建立虚拟环境去执行
pip install --upgrade pip
##2. 安装docker-compose
pip install docker-compose --ignore-installed requests

5.2.3 制作基础镜像

## 如果没有debootstrap
## 有网
sudo apt install debootstrap
## 无网
http://ftp.cn.debian.org/debian/pool/main/d/debootstrap/debootstrap_1.0.89_all.deb
去地址下载安装包 去安装sudo debootstrap --arch=arm64 --no-check-gpg  stretch rootfs http://mirrors.ustc.edu.cn/debiansudo tar -C rootfs -c . | docker import - rootfs

5.2.4 制作golang镜像

Dockerfile
    ##FROM rootfs:latest#RUN apk add --no-cache \#       ca-certificates# set up nsswitch.conf for Go's "netgo" implementation# - https://github.com/golang/go/blob/go1.9.1/src/net/conf.go#L194-L275# - docker run --rm debian:stretch grep '^hosts:' /etc/nsswitch.conf#RUN [ ! -e /etc/nsswitch.conf ] && echo 'hosts: files dns' > /etc/nsswitch.confENV PATH /usr/local/go/bin:$PATHENV GOLANG_VERSION 1.16.10RUN set -euxRUN apt install -y bash RUN apt install make --allow-unauthenticated -yRUN apt install gcc --allow-unauthenticated -yRUN apt install g++ --allow-unauthenticated -yRUN apt install gnupg --allow-unauthenticated -yRUN apt install golang --allow-unauthenticated -yRUN apt install musl-dev --allow-unauthenticated -yRUN apt install openssl --allow-unauthenticated -yRUN export \# set GOROOT_BOOTSTRAP such that we can actually build GoGOROOT_BOOTSTRAP="$(go env GOROOT)" \# ... and set "cross-building" related vars to the installed system's values so that we create a build targeting the proper arch# (for example, if our build host is GOARCH=amd64, but our build env/image is GOARCH=386, our build needs GOARCH=386)GOOS="$(go env GOOS)" \GOARCH="$(go env GOARCH)" \GOHOSTOS="$(go env GOHOSTOS)" \GOHOSTARCH="$(go env GOHOSTARCH)"# also explicitly set GO386 and GOARM if appropriate# https://github.com/docker-library/golang/issues/184#RUN apkArch="$(apk --print-arch)"; \# case "$apkArch" in \#     armhf) export GOARM='6' ;; \#        armv7) export GOARM='7' ;; \#        x86) export GO386='387' ;; \#    esac# https://github.com/golang/go/issues/38536#issuecomment-616897960COPY go1.16.10.src.tar.gz /# https://github.com/golang/go/issues/14739#issuecomment-324767697RUN export GNUPGHOME="$(mktemp -d)"; \tar -C /usr/local -xzf go1.16.10.src.tar.gz; \rm go1.16.10.src.tar.gz; \\goEnv="$(go env | sed -rn -e '/^GO(OS|ARCH|ARM|386)=/s//export \0/p')"; \eval "$goEnv"; \[ -n "$GOOS" ]; \[ -n "$GOARCH" ]; \( \cd /usr/local/go/src; \./make.bash; \); \\#pk del --no-network .build-deps; \\# pre-compile the standard library, just like the official binary release tarballs dogo install std; \# go install: -race is only supported on linux/amd64, linux/ppc64le, linux/arm64, freebsd/amd64, netbsd/amd64, darwin/amd64 and windows/amd64# go install -race std; \\# remove a few intermediate / bootstrapping files the official binary release tarballs do not containrm -rf \/usr/local/go/pkg/*/cmd \/usr/local/go/pkg/bootstrap \/usr/local/go/pkg/obj \/usr/local/go/pkg/tool/*/api \/usr/local/go/pkg/tool/*/go_bootstrap \/usr/local/go/src/cmd/dist/dist \; \\go versionENV GOPATH /goENV PATH $GOPATH/bin:$PATHRUN mkdir -p "$GOPATH/src" "$GOPATH/bin" && chmod -R 777 "$GOPATH"WORKDIR $GOPATH
## 下载golang源码 放到和Dockerfile同一级目录
wget https://studygolang.com/dl/golang/go1.16.10.src.tar.gz
## 注意Dockerfile FROM依赖rootfs:latest的tag 把上一步自建基础镜像改一下tagdocker build -t golang:latest .

5.2.5 制作fabric-ca镜像

image/fabric/Dockerfile如下
    ## Copyright IBM Corp. All Rights Reserved.## SPDX-License-Identifier: Apache-2.0#ARG GO_VERARG ALPINE_VERFROM golang:latest as builderARG GO_LDFLAGSARG GO_TAGSRUN apt install gcc --allow-unauthenticated -yRUN apt install binutils-gold --allow-unauthenticated -yRUN apt install git --allow-unauthenticated -yRUN apt install musl-dev --allow-unauthenticated -yADD . /build/fabric-caWORKDIR /build/fabric-caRUN go install -tags "${GO_TAGS}" -ldflags "${GO_LDFLAGS}" \github.com/hyperledger/fabric-ca/cmd/fabric-ca-server \&& go install -tags "${GO_TAGS}" -ldflags "${GO_LDFLAGS}" \github.com/hyperledger/fabric-ca/cmd/fabric-ca-clientFROM rootfs:latest#RUN apk add --no-cache \#       tzdata;ENV FABRIC_CA_HOME /etc/hyperledger/fabric-ca-serverCOPY --from=builder /go/bin /usr/local/binEXPOSE 7054CMD fabric-ca-server start -b admin:adminpw
  make docker

5.2.6 制作fabric

 baseos  /images/baseos/Dockerfile
    # Copyright IBM Corp. All Rights Reserved.## SPDX-License-Identifier: Apache-2.0ARG GO_VERARG ALPINE_VERFROM rootfs:latest as baseRUN apt install tzdata --allow-unauthenticated -y#RUN addgroup -g 500 chaincode && adduser -u 500 -D -h /home/chaincode -G chaincode chaincode#USER chaincode
    ccenv images/ccenv/Dockerfile
    # Copyright IBM Corp. All Rights Reserved.## SPDX-License-Identifier: Apache-2.0ARG GO_VERARG ALPINE_VERFROM golang:latestRUN apt install g++ --allow-unauthenticated -yRUN apt install gcc --allow-unauthenticated -yRUN apt install git --allow-unauthenticated -yRUN apt install musl-dev --allow-unauthenticated -yRUN mkdir -p /chaincode/output /chaincode/input#RUN addgroup -g 500 chaincode && adduser -u 500 -D -h /home/chaincode -G chaincode chaincode#RUN chown -R chaincode:chaincode /chaincode#USER chaincode
   orderer images/orderer/Dockerfile
    # Copyright IBM Corp. All Rights Reserved.## SPDX-License-Identifier: Apache-2.0ARG GO_VERARG ALPINE_VERFROM rootfs:latest as base#RUN apk add --no-cache tzdataRUN apt install tzdata --allow-unauthenticated -y# set up nsswitch.conf for Go's "netgo" implementation# - https://github.com/golang/go/blob/go1.9.1/src/net/conf.go#L194-L275# - docker run --rm debian:stretch grep '^hosts:' /etc/nsswitch.conf#RUN [ ! -e /etc/nsswitch.conf ] && echo 'hosts: files dns' > /etc/nsswitch.confFROM golang:latest as golangRUN apt install gcc --allow-unauthenticated -yRUN apt install g++ --allow-unauthenticated -yRUN apt install musl-dev --allow-unauthenticated -yRUN apt install git --allow-unauthenticated -yRUN apt install bash --allow-unauthenticated -yRUN apt install make --allow-unauthenticated -yADD . $GOPATH/src/github.com/hyperledger/fabricWORKDIR $GOPATH/src/github.com/hyperledger/fabricFROM golang as ordererARG GO_TAGSRUN make orderer GO_TAGS=${GO_TAGS}FROM baseENV FABRIC_CFG_PATH /etc/hyperledger/fabricVOLUME /etc/hyperledger/fabricVOLUME /var/hyperledgerCOPY --from=orderer /go/src/github.com/hyperledger/fabric/build/bin /usr/local/binCOPY --from=orderer /go/src/github.com/hyperledger/fabric/sampleconfig/msp ${FABRIC_CFG_PATH}/mspCOPY --from=orderer /go/src/github.com/hyperledger/fabric/sampleconfig/orderer.yaml ${FABRIC_CFG_PATH}COPY --from=orderer /go/src/github.com/hyperledger/fabric/sampleconfig/configtx.yaml ${FABRIC_CFG_PATH}EXPOSE 7050CMD ["orderer"]
 peer images/peer/Dockerfile
    # Copyright IBM Corp. All Rights Reserved.## SPDX-License-Identifier: Apache-2.0ARG GO_VERARG ALPINE_VERFROM rootfs:latest as peer-base#RUN apk add --no-cache tzdataRUN apt install tzdata --allow-unauthenticated -y# set up nsswitch.conf for Go's "netgo" implementation# - https://github.com/golang/go/blob/go1.9.1/src/net/conf.go#L194-L275# - docker run --rm debian:stretch grep '^hosts:' /etc/nsswitch.confRUN echo 'hosts: files dns' > /etc/nsswitch.confFROM golang:latest as golangRUN apt install bash --allow-unauthenticated -yRUN apt install gcc --allow-unauthenticated -yRUN apt install g++ --allow-unauthenticated -yRUN apt install git --allow-unauthenticated -yRUN apt install make --allow-unauthenticated -yRUN apt install musl-dev --allow-unauthenticated -yADD . $GOPATH/src/github.com/hyperledger/fabricWORKDIR $GOPATH/src/github.com/hyperledger/fabricFROM golang as peer ARG GO_TAGSRUN make peer GO_TAGS=${GO_TAGS}FROM peer-baseENV FABRIC_CFG_PATH /etc/hyperledger/fabricVOLUME /etc/hyperledger/fabricVOLUME /var/hyperledgerCOPY --from=peer /go/src/github.com/hyperledger/fabric/build/bin /usr/local/binCOPY --from=peer /go/src/github.com/hyperledger/fabric/sampleconfig/msp ${FABRIC_CFG_PATH}/mspCOPY --from=peer /go/src/github.com/hyperledger/fabric/sampleconfig/core.yaml ${FABRIC_CFG_PATH}EXPOSE 7051CMD ["peer","node","start"]

5.2.7 部署

## 注意 baseos ccenv 版本 :2.2
## 正常部署

国产银河麒麟arm64架构部署fabric2.2相关推荐

  1. 支持国产ARM64架构部署,支持使用rz、sz命令上传下载文件,JumpServer堡垒机v2.12.0发布

    支持国产ARM64架构部署,JumpServer堡垒机v2.12.0发布 7月19日,JumpServer开源堡垒机正式发布v2.12.0版本.在这一版本中,JumpServer新增支持ARM64架构 ...

  2. .NET 6应用程序适配国产银河麒麟V10系统随记

    最近想在麒麟系统上运行.NET 6程序,经过一番折腾最终完成了,简单记录一下. 目标系统: CPU: aarch64架构(ARM64) 操作系统:银河麒麟V10高级服务器系统 银河麒麟V10系统(以下 ...

  3. 国产银河麒麟系统部署Redis、Nginx分享

    前提需知: 银河麒麟系统国产机不能解压安装,需要用rpm安装包.使用命令安装:npm -i. 常用命令: pm -q(query)软件包查询功能 例如:rpm -q jdk 或者 rpm -qa jd ...

  4. 银河麒麟 ARM架构 Qemu虚拟机

    1. Qemu安装 Qemu的安装请参考: https://www.qemu.org/download/#source 下载源码,编译安装即可,注意银河麒麟上的gcc版本较低,请升级gcc,升级方式也 ...

  5. 【国产化系列】国产银河麒麟Kylin V10操作系统介绍

    DATE: 2021.8.18 文章目录 1.参考 2.Kylin V10介绍 2.1.简介 2.2.主要功能 2.3.产品特点 3.桌面操作系统 1.参考 银河麒麟操作系统v10 银河麒麟桌面操作系 ...

  6. 国产银河麒麟操作系统下载地址收集--【更新】2023.02

    银河麒麟高级服务器操作系统V10是针对企业级关键业务,适应虚拟化.云计算.大数据.工业互联网时代对主机系统可靠性.安全性.性能.扩展性和实时性等需求,依据CMMI5级标准研制的提供内生本质安全.云原生 ...

  7. 国产银河麒麟系统V10忘记密码重置操作

    国产电脑有忘记密码的,因为银河麒麟系统是基于linux系统的,不必像windows操作系统那样需要使用U盘来进行重置密码,好像还简单一些.         基本的操作也就3步      1. 重启电脑 ...

  8. 国产银河麒麟系统源码安装Openvas

    国产麒麟系统源码安装Openvas 1.银河麒麟安装所需安装源 2.执行更新命令: 3.执行安装命令: 4.安装源码包libmicrohttpd-dev 5.从github下载openvas的源码包, ...

  9. 银河麒麟和鸿蒙系统,国产银河麒麟操作系统V10发布 兼容300万APP厉害了

    自从去年华为被列入实体名单之后,国内就再次掀起了一波自研热潮.因为从华为的事件当中,我们深刻的了解到,核心技术还是要掌握在自己的手里.不然别人随时都可能摆你一道,而你却束手无策.在这之后华为的多项&q ...

最新文章

  1. Python自然语言处理学习笔记(66):7.7 小结
  2. Flash补间引擎应用:图片特效(2)
  3. 关于求职简历的碎碎念。
  4. 9. OD-PEID的入门及BASIC(VB)开发的程序破解
  5. Tony的口胡呼呼(。-ω-)zzz
  6. The requested resource is not available. 原因,成功解决
  7. Hutool介绍(详)
  8. JQ树形菜单加表格混合使用:treeTable组件使用
  9. 股票交易接口申请方式有哪几种?
  10. 千锋重庆Java基础之Java拼图游戏的代码
  11. SONM DWH组件介绍
  12. Python爬取美女主播图片适合初学者
  13. icinga用NSCA监控远程Linux服务器
  14. 【VB界面】子类化重绘仿QQ2009渐变按钮(模块)
  15. win10任务栏透明—注册表方法【新增半透明】
  16. 字节、比特、位的单位换算
  17. MessageBoxA、MessageBoxW与MessageBox
  18. 在Ubuntu18.04中安装谷歌地球Google Earth
  19. 使用SimpleUpdater实现WinForm自动升级
  20. 计算机配色在纺织中的应用,浅析纺织染色电脑配色程序

热门文章

  1. Office 显示仅查看未授权
  2. key / value 数据库的选型
  3. 【数学建模】面包店老板使日均收入最大化的诀窍
  4. 自媒体新手注册账号,在填写资料时有哪几个点是需要注意的?
  5. HTML插入在线图片不成功?
  6. 在线教育系统平台的优势
  7. 关于第一次写项目的总结
  8. 电动SOC仿真系列-考虑电池老化影响的电池UKF-SOC估算研究
  9. 股东人数选股软件V1.2
  10. chrome升级后LODOP打印插件无法使用