【区块链】BigChainDB docker安装

如果饿了就吃,困了就睡,渴了就喝,人生就太无趣了


单节点安装

1.环境准备

本人使用的是CentOS7 的虚拟机,安装了docker和docker-compose工具。

2. 编辑docker-compose文件

创建并编辑文件

vim docker-compose.yml

编辑内容如下

version: '2.1'

services:
  mongodb:
    image: mongo:3.6
    ports:
      - "27017:27017"
    command: mongod
  bigchaindb:
    image: bigchaindb/bigchaindb
    depends_on:
      - mongodb
      - tendermint
    environment:
      BIGCHAINDB_DATABASE_BACKEND: localmongodb
      BIGCHAINDB_DATABASE_HOST: mongodb
      BIGCHAINDB_DATABASE_PORT: 27017
      BIGCHAINDB_SERVER_BIND: 0.0.0.0:9984
      BIGCHAINDB_WSSERVER_HOST: 0.0.0.0
      BIGCHAINDB_WSSERVER_ADVERTISED_HOST: bigchaindb
      BIGCHAINDB_TENDERMINT_HOST: tendermint
      BIGCHAINDB_TENDERMINT_PORT: 26657
    ports:
      - "9984:9984"
      - "9985:9985"
      - "26658:26658"
    healthcheck:
      test: ["CMD", "bash", "-c", "curl http://bigchaindb:9984 && curl http://tendermint:26657/abci_query"]
      interval: 3s
      timeout: 5s
      retries: 3
    #command: 'bigchaindb start'
  tendermint:
    image: tendermint/tendermint:0.22.8
    entrypoint: ''
    ports:
      - "26656:26656"
      - "26657:26657"
    command: sh -c "tendermint init && tendermint node --consensus.create_empty_blocks=false --proxy_app=tcp://bigchaindb:26658"

3. 运行BigchainDB节点

docker-compose up -d

运行成功后查看容器状态,启动成功会产生3个容器。如图1:
在这里插入图片描述

多节点安装

1. 准备节点

1.1 环境准备

准备四个节点的运行环境,本人安装是使用的4个CentOS7的虚拟机环境,每个几点环境需要安装dockerdocker-compose工具。

1.2 获取每个节点的IP

本人的四台虚拟机的ip如下:

node0:192.168.85.147
node1:192.168.85.136
node2:192.168.85.137
node3:192.168.85.146

1.3 创建目录

在每各节点都创建bigchaindb文件夹,如图2:这是最终的bigchaindb文件夹结构,现在可以看一下,这些文件会在后面出现。

在这里插入图片描述

2. docker-compose

准备docker-compose文件,在bigchaindb目录下创建docker-compose.yml

vim docker-compose.yml

编辑下面内容:

version: '2.1'

services:
  mongodb:
    image: mongo:3.6
    ports:
      - "27017:27017"
    command: mongod
  bigchaindb:
    image: bigchaindb/bigchaindb
    depends_on:
      - mongodb
      - tendermint
    environment:
      BIGCHAINDB_DATABASE_BACKEND: localmongodb
      BIGCHAINDB_DATABASE_HOST: mongodb
      BIGCHAINDB_DATABASE_PORT: 27017
      BIGCHAINDB_SERVER_BIND: 0.0.0.0:9984
      BIGCHAINDB_WSSERVER_HOST: 0.0.0.0
      BIGCHAINDB_WSSERVER_ADVERTISED_HOST: bigchaindb
      BIGCHAINDB_TENDERMINT_HOST: tendermint
      BIGCHAINDB_TENDERMINT_PORT: 26657
    ports:
      - "9984:9984"
      - "9985:9985"
      - "26658:26658"
    healthcheck:
      test: ["CMD", "bash", "-c", "curl http://bigchaindb:9984 && curl http://tendermint:26657/abci_query"]
      interval: 3s
      timeout: 5s
      retries: 3
    #command: 'bigchaindb start'
  tendermint:
    image: tendermint/tendermint:0.22.8
    volumes:
      - ./tmdata:/tendermint
    entrypoint: ''
    ports:
      - "26656:26656"
      - "26657:26657"
    command: sh -c "tendermint init && tendermint node --consensus.create_empty_blocks=false --proxy_app=tcp://bigchaindb:26658"

3. 下载 tendermint

因为需要使用tendermint来生成配置文件,就是tmdata下的文件。所以需要下载编译好的tendermint二进制文件,因为BigchainDB需要使用的tendermint的0.22.8版本,所以下载0.22.8的二进制文件。

#下载二进制文件
wget https://github.com/tendermint/tendermint/releases/download/v0.22.8/tendermint_0.22.8_linux_amd64.zip
#解压文件
unzip unzip tendermint_0.22.8_linux_amd64.zip
#检查版本
./tendermint version

4. 生成配置文件

使用tendermint testnet来生成所有节点的配置文件,使用tendermint testnet -h查看命令详细信息。

4.1 生成多个节点配置信息

命令默认生成4个节点的配置文件,如果需要更多节点的配置信息,在tendermint testnet命令后加-v,例:需要生成10个节点配置信息

tendermint testnet -v 10

4.2 配置连续的ip的配置信息

如果节点的ip是连续的,例:192.168.85.100~192.168.85.103

tendermint testnet starting-ip-address 192.168.85.100

这样配置文件中的ip就是配置好的。

5. 修改配置文件

如果是按照4.2中的方法生成的配置文件,就直接跳过此步骤。
生成的配置文件会在当前文件夹下生成mytestnet文件。目录如图3:

在这里插入图片描述
将每一个config.toml文件进行修改,修改第93行,如图4:将其中node0-node3中改成对应的ip

在这里插入图片描述

将各个config文件发送到各个节点bigchaindb/tmdata

scp -r /mytestnet/node0/ [email protected]:/root/bigchaindb/tmdata
scp -r /mytestnet/node1/ [email protected]:/root/bigchaindb/tmdata
scp -r /mytestnet/node2/ [email protected]:/root/bigchaindb/tmdata
scp -r /mytestnet/node3/ [email protected]:/root/bigchaindb/tmdata

6. 修改文件夹用户组

因为docker-compose.yml中挂载的文件夹bigchaindb/tmdata,如果不改变该文件夹的用户组,启动后,tendermint会报错Permission denied,所以需要修改用户组,每个节点都需要修改tmdata

chown -R 100 tmdata
chgrp -R 1000 tmdata

7. 启动

每个节点都运行docker-compose up -d,使用docker ps查看启动的容器,正常启动会有3个容器。tendermint,mongodbbigchaindb,如图5

在这里插入图片描述

7.1 检查集群启动情况

访问:http://192.168.85.147:26657/abci_info
返回信息如图6:块高为1表示成功。

在这里插入图片描述

8. 测试

8.1 发送交易

选择其中一个节点,发送交易,
发送POST交易:192.168.85.146:9984/api/v1/transactions?mode=async,发送输入如下:

{
  "asset": {
    "data": {
      "msg": "Hello BigchainDB!"
    }
  },
  "id": "4957744b3ac54434b8270f2c854cc1040228c82ea4e72d66d2887a4d3e30b317",
  "inputs": [
    {
      "fulfillment": "pGSAIDE5i63cn4X8T8N1sZ2mGkJD5lNRnBM4PZgI_zvzbr-cgUCy4BR6gKaYT-tdyAGPPpknIqI4JYQQ-p2nCg3_9BfOI-15vzldhyz-j_LZVpqAlRmbTzKS-Q5gs7ZIFaZCA_UD",
      "fulfills": null,
      "owners_before": [
        "4K9sWUMFwTgaDGPfdynrbxWqWS6sWmKbZoTjxLtVUibD"
      ]
    }
  ],
  "metadata": {
    "sequence": 0
  },
  "operation": "CREATE",
  "outputs": [
    {
      "amount": "1",
      "condition": {
        "details": {
          "public_key": "4K9sWUMFwTgaDGPfdynrbxWqWS6sWmKbZoTjxLtVUibD",
          "type": "ed25519-sha-256"
        },
        "uri": "ni:///sha-256;PNYwdxaRaNw60N6LDFzOWO97b8tJeragczakL8PrAPc?fpt=ed25519-sha-256&cost=131072"
      },
      "public_keys": [
        "4K9sWUMFwTgaDGPfdynrbxWqWS6sWmKbZoTjxLtVUibD"
      ]
    }
  ],
  "version": "2.0"
}

8.2 查询

在另一个节点查询刚刚发送的交易,发送get请求:

http://192.168.85.147:9984/api/v1/assets/?search=Hello BigchainDB

查询结果如下:比对刚才的交易ID即可。

[
    {
        "data": {
            "msg": "Hello BigchainDB!"
        },
        "id": "4957744b3ac54434b8270f2c854cc1040228c82ea4e72d66d2887a4d3e30b317"
    }
]
发布了35 篇原创文章 · 获赞 4 · 访问量 2499

猜你喜欢

转载自blog.csdn.net/weixin_41938180/article/details/104594530
今日推荐