国产银河麒麟arm64架构部署fabric2.2
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相关推荐
- 支持国产ARM64架构部署,支持使用rz、sz命令上传下载文件,JumpServer堡垒机v2.12.0发布
支持国产ARM64架构部署,JumpServer堡垒机v2.12.0发布 7月19日,JumpServer开源堡垒机正式发布v2.12.0版本.在这一版本中,JumpServer新增支持ARM64架构 ...
- .NET 6应用程序适配国产银河麒麟V10系统随记
最近想在麒麟系统上运行.NET 6程序,经过一番折腾最终完成了,简单记录一下. 目标系统: CPU: aarch64架构(ARM64) 操作系统:银河麒麟V10高级服务器系统 银河麒麟V10系统(以下 ...
- 国产银河麒麟系统部署Redis、Nginx分享
前提需知: 银河麒麟系统国产机不能解压安装,需要用rpm安装包.使用命令安装:npm -i. 常用命令: pm -q(query)软件包查询功能 例如:rpm -q jdk 或者 rpm -qa jd ...
- 银河麒麟 ARM架构 Qemu虚拟机
1. Qemu安装 Qemu的安装请参考: https://www.qemu.org/download/#source 下载源码,编译安装即可,注意银河麒麟上的gcc版本较低,请升级gcc,升级方式也 ...
- 【国产化系列】国产银河麒麟Kylin V10操作系统介绍
DATE: 2021.8.18 文章目录 1.参考 2.Kylin V10介绍 2.1.简介 2.2.主要功能 2.3.产品特点 3.桌面操作系统 1.参考 银河麒麟操作系统v10 银河麒麟桌面操作系 ...
- 国产银河麒麟操作系统下载地址收集--【更新】2023.02
银河麒麟高级服务器操作系统V10是针对企业级关键业务,适应虚拟化.云计算.大数据.工业互联网时代对主机系统可靠性.安全性.性能.扩展性和实时性等需求,依据CMMI5级标准研制的提供内生本质安全.云原生 ...
- 国产银河麒麟系统V10忘记密码重置操作
国产电脑有忘记密码的,因为银河麒麟系统是基于linux系统的,不必像windows操作系统那样需要使用U盘来进行重置密码,好像还简单一些. 基本的操作也就3步 1. 重启电脑 ...
- 国产银河麒麟系统源码安装Openvas
国产麒麟系统源码安装Openvas 1.银河麒麟安装所需安装源 2.执行更新命令: 3.执行安装命令: 4.安装源码包libmicrohttpd-dev 5.从github下载openvas的源码包, ...
- 银河麒麟和鸿蒙系统,国产银河麒麟操作系统V10发布 兼容300万APP厉害了
自从去年华为被列入实体名单之后,国内就再次掀起了一波自研热潮.因为从华为的事件当中,我们深刻的了解到,核心技术还是要掌握在自己的手里.不然别人随时都可能摆你一道,而你却束手无策.在这之后华为的多项&q ...
最新文章
- Python自然语言处理学习笔记(66):7.7 小结
- Flash补间引擎应用:图片特效(2)
- 关于求职简历的碎碎念。
- 9. OD-PEID的入门及BASIC(VB)开发的程序破解
- Tony的口胡呼呼(。-ω-)zzz
- The requested resource is not available. 原因,成功解决
- Hutool介绍(详)
- JQ树形菜单加表格混合使用:treeTable组件使用
- 股票交易接口申请方式有哪几种?
- 千锋重庆Java基础之Java拼图游戏的代码
- SONM DWH组件介绍
- Python爬取美女主播图片适合初学者
- icinga用NSCA监控远程Linux服务器
- 【VB界面】子类化重绘仿QQ2009渐变按钮(模块)
- win10任务栏透明—注册表方法【新增半透明】
- 字节、比特、位的单位换算
- MessageBoxA、MessageBoxW与MessageBox
- 在Ubuntu18.04中安装谷歌地球Google Earth
- 使用SimpleUpdater实现WinForm自动升级
- 计算机配色在纺织中的应用,浅析纺织染色电脑配色程序