Hyperledger Fabric 1.2系列:2.下载二进制、Docker 镜像及解析官方提供的下载脚本

转简书-沙漠中的猴

简介

该小结会介绍

  • 官方脚本
  • 下载fabric-samples代码
  • 下载二进制文件
  • 下载Docker镜像
  • 将二进制文件添加进PATH路径

下载fabric-samples代码

选择一个存放代码的目录。我将代码放在了$GOPATH/src目录下。

cd $GOPATH/src

官方提供了一个脚本,可以直接下载fabric-samples代码、docker镜像以及二进制文件。稍后我们讲解一下这个文件里面都做了些什么操作。

curl -sSL http://bit.ly/2ysbOFE | bash -s 1.2.0

如果你想下载Fabric,Fabric-CA和第三方镜像,你可以指定其版本

curl -sSL http://bit.ly/2ysbOFE | bash -s <fabric> <fabric-ca> <thirdparty>
curl -sSL http://bit.ly/2ysbOFE | bash -s 1.2.0 1.2.0 0.4.10

这种方式可能解析不了。所以请尝试下面的这个命令。

curl -sSL https://raw.githubusercontent.com/hyperledger/fabric/master/scripts/bootstrap.sh | bash -s  1.2.0 1.2.0 0.4.10

这里有个小技巧,命令行可能解析不了http://bit.ly/2ysbOFE这个链接。你可以把这个链接粘贴到浏览器里面,然后再将解析之后的链接,复制回来。

之后,你就会看到你当前处于fabric-samples文件夹内。
输入docker images之后,会看到多个docker 镜像。
fabric-samples目录的/bin文件夹下,会看到多个二进制文件。

解析官方脚本。

官方的这个脚本可以在github上面查看的到。
https://github.com/hyperledger/fabric/blob/master/scripts/bootstrap.sh

github上的内容,不太方便查看,我把这个文件复制出来了。你可以打开另一个窗口来查看完整的脚本内容: 脚本链接

解析脚本的执行流程

默认设置的代码版本为1.2.0,CA版本为1.2.0,第三方镜像版本为0.4.10

# if version not passed in, default to latest released version
export VERSION=1.2.0
# if ca version not passed in, default to latest released version
export CA_VERSION=$VERSION
# current version of thirdparty images (couchdb, kafka and zookeeper) released
export THIRDPARTY_IMAGE_VERSION=0.4.10

如果你在执行脚本的时候,输入了三个参数,会分别对代码版本、CA版本、第三方镜像版本赋值。

扫描二维码关注公众号,回复: 4898479 查看本文章
if [ ! -z $1 ]; then
  VERSION=$1;shift            
  if [ ! -z $1 ]; then
    CA_VERSION=$1;shift
    if [ ! -z $1 ]; then
      THIRDPARTY_IMAGE_VERSION=$1;shift
    fi
  fi
fi

如果你输入的版本号码是1.0.x或者1.1.x则会进入第一个if分支,赋值对应的二进制压缩包名称。
否则进入else分支,赋值1.2.0版本的二进制压缩包名称。

# prior to 1.2.0 architecture was determined by uname -m
if [[ $VERSION =~ ^1\.[0-1]\.* ]]; then
  export FABRIC_TAG=${MARCH}-${VERSION}
  export CA_TAG=${MARCH}-${CA_VERSION}
  export THIRDPARTY_TAG=${MARCH}-${THIRDPARTY_IMAGE_VERSION}
else
  # starting with 1.2.0, multi-arch images will be default
  : ${CA_TAG:="$CA_VERSION"}
  : ${FABRIC_TAG:="$VERSION"}
  : ${THIRDPARTY_TAG:="$THIRDPARTY_IMAGE_VERSION"}
fi

BINARY_FILE=hyperledger-fabric-${ARCH}-${VERSION}.tar.gz
CA_BINARY_FILE=hyperledger-fabric-ca-${ARCH}-${CA_VERSION}.tar.gz

解析命令行参数:

# then parse opts
while getopts "h?dsb" opt; do
  case "$opt" in
    h|\?)
      printHelp
      exit 0
    ;;
    d)  DOCKER=false
    ;;
    s)  SAMPLES=false
    ;;
    b)  BINARIES=false
    ;;
  esac
done

如果SAMPLEStrue则下载fabric-samples代码。

if [ "$SAMPLES" == "true" ]; then
  echo
  echo "Installing hyperledger/fabric-samples repo"
  echo
  samplesInstall
fi

如果BINARIEStrue则下载二进制文件

if [ "$BINARIES" == "true" ]; then
  echo
  echo "Installing Hyperledger Fabric binaries"
  echo
  binariesInstall
fi

如果DOCKERtrue,则下载Docker相关镜像

if [ "$DOCKER" == "true" ]; then
  echo
  echo "Installing Hyperledger Fabric docker images"
  echo
  dockerInstall
fi

解析脚本的函数内容

打印帮助信息:

printHelp() {
  echo "Usage: bootstrap.sh [<version>] [<ca_version>] [<thirdparty_version>][-d -s -b]"
  echo
  echo "-d - bypass docker image download"
  echo "-s - bypass fabric-samples repo clone"
  echo "-b - bypass download of platform-specific binaries"
  echo
  echo "e.g. bootstrap.sh 1.2.0 -s"
  echo "would download docker images and binaries for version 1.2.0"
}

遍历下载docker镜像:

dockerFabricPull() {
  local FABRIC_TAG=$1
  for IMAGES in peer orderer ccenv tools; do
      echo "==> FABRIC IMAGE: $IMAGES"
      echo
      docker pull hyperledger/fabric-$IMAGES:$FABRIC_TAG
      docker tag hyperledger/fabric-$IMAGES:$FABRIC_TAG hyperledger/fabric-$IMAGES
  done
}

遍历下载第三方镜像:

dockerThirdPartyImagesPull() {
  local THIRDPARTY_TAG=$1
  for IMAGES in couchdb kafka zookeeper; do
      echo "==> THIRDPARTY DOCKER IMAGE: $IMAGES"
      echo
      docker pull hyperledger/fabric-$IMAGES:$THIRDPARTY_TAG
      docker tag hyperledger/fabric-$IMAGES:$THIRDPARTY_TAG hyperledger/fabric-$IMAGES
  done
}

下载CA镜像:

dockerCaPull() {
      local CA_TAG=$1
      echo "==> FABRIC CA IMAGE"
      echo
      docker pull hyperledger/fabric-ca:$CA_TAG
      docker tag hyperledger/fabric-ca:$CA_TAG hyperledger/fabric-ca
}

如果first-network目录存在,则将代码切换到VERSION版本。(说明fabric-samples代码已经下载,并且当前处于fabric-samples文件夹内)。
如果fabric-samples目录存在,则进入fabric-samples目录内,切换到VERSION版本。
否则,下载fabric-samples代码,切换到VERSION版本。


samplesInstall() {
  # clone (if needed) hyperledger/fabric-samples and checkout corresponding
  # version to the binaries and docker images to be downloaded
  if [ -d first-network ]; then
    # if we are in the fabric-samples repo, checkout corresponding version
    echo "===> Checking out v${VERSION} branch of hyperledger/fabric-samples"
    git checkout v${VERSION}
  elif [ -d fabric-samples ]; then
    # if fabric-samples repo already cloned and in current directory,
    # cd fabric-samples and checkout corresponding version
    echo "===> Checking out v${VERSION} branch of hyperledger/fabric-samples"
    cd fabric-samples && git checkout v${VERSION}
  else
    echo "===> Cloning hyperledger/fabric-samples repo and checkout v${VERSION}"
    git clone -b master https://github.com/hyperledger/fabric-samples.git && cd fabric-samples && git checkout v${VERSION}
  fi
}

将二进制文件添加进PATH路径

进入fabric-samples/bin文件夹内,输入pwd命令,来获取当前的路径

root@JDu4e00u53f7:~# cd $GOPATH/src/fabric-samples/bin/
root@JDu4e00u53f7:~/gowork/src/fabric-samples/bin# pwd
/root/gowork/src/fabric-samples/bin

复制上面的路径。打开~/.bashrc文件。将上面的路径添加到PATH路径下。

vim ~/.bashrc 

举例:我将下面的内容添加进了我的~/.bashrc文件的最下面。请根据自己的实际路径来配置该变量。

# set fabric-samples bin
export PATH=$GOPATH/src/fabric-samples/bin:$PATH    

之后,保存并退出。执行source ~/.bashrc命令

检查二进制文件是否生效

在任意目录下输入: cryptogen version

root@JDu4e00u53f7:~/gowork/src# cryptogen version
cryptogen:
 Version: 1.2.0
 Commit SHA: cae2ad4
 Go version: go1.10
 OS/Arch: linux/amd64

总结

如果你发现每次重新登录的时候,都需要执行source ~/.bashrc命令生效二进制文件。你可以参考如下链接来解决该问题:https://www.jianshu.com/p/c4946024b946



作者:沙漠中的猴
链接:https://www.jianshu.com/p/87a7e273b2fd
來源:简书
简书著作权归作者所有,任何形式的转载都请联系作者获得授权并注明出处。

猜你喜欢

转载自blog.csdn.net/Tan915730/article/details/86412213