1. 程式人生 > >自動化docker部署私有IPFS網路(用於本地debug)

自動化docker部署私有IPFS網路(用於本地debug)

在上一篇中,總結了部署私有IPFS網路的具體步驟。後來覺得可以把整個流程做成自動化的部署工具,以後用起來會比較方便。

閒言少敘,直接上程式碼。要用的話直接copy到一個start.sh檔案,然後執行就可以了。引數只有一個peerNumber,用於指定IPFS網路的容量。比如:./start.sh 3
會啟動包含3個節點的私有IPFS網路。

#!/bin/bash

function bootIpfsPeer {
    index=$1
    hostName=ipfs_host_${index}

    ipfs_staging=/tmp/ipfs_staging_${index}
rm -rf $ipfs_staging mkdir -p $ipfs_staging ipfs_data=/tmp/ipfs_data_${index} rm -rf $ipfs_data mkdir -p $ipfs_data cp ./data/swarm.key $ipfs_data echo "Creating ${hostName} ..." docker run -d --name ${hostName} \ -v ${ipfs_staging}:/export \ -v ${ipfs_data}
:/data/ipfs \ -p $((4001 + index)):4001 \ -p $((5001 + index)):5001 \ -p 127.0.0.1:$((8080 + index)):8080 \ ipfs/go-ipfs:latest echo "Remove bootstrap for ${hostName} ..." docker exec ${hostName} ipfs bootstrap rm --all } function setupIpfsNetwork { for (( i=0; i<$1; i++
))
do bootIpfsPeer ${i} done } function createSwarmKey { rm -rf ./data mkdir -p ./data go get github.com/Kubuxu/go-ipfs-swarm-key-gen/ipfs-swarm-key-gen $GOPATH/bin/ipfs-swarm-key-gen > ./data/swarm.key } function rmIpfsHosts { dockerContainers=$(docker ps -a | awk '$2~/ipfs/ {print $1}') if [ "$dockerContainers" != "" ]; then echo "Deleting existing docker containers ..." docker rm -f $dockerContainers fi } function showResult { docker ps -a } function main { rmIpfsHosts createSwarmKey setupIpfsNetwork $1 showResult } if [ "$#" -ne 1 ]; then echo "ERROR: Peers number must be set for private ipfs network" echo "usage: start.sh \${peerNumber}" echo "For example: Run this command" echo " ./start.sh 3" echo " A private ipfs network with 3 peers will be setup locally" exit 1 else main $1 fi