VOOZH about

URL: https://dev.to/cedon/deploy-bigchaindb-using-docker-compose-4ig7

โ‡ฑ Deploy BigchainDB using Docker Compose - DEV Community


BigchainDB is a "blockchain database"..

..With high throughput, low latency, powerful query functionality, decentralized control, immutable data storage and built-in asset support, BigchainDB is like a database with blockchain characteristics.(bigchaindb.com)

It's a good choice for who wants to work with immutable databases.

Here's a tutorial to deploy a local infrastructure docker based.
(I'm using Debian Buster, but the project recommends latests Ubuntu and CentOS)

Requirements

  • Docker(19.03+)
  • Docker-Compose (2.0+)
  • python3.6+
  • pip3+
  • bigchaindb_driver(for the tests, install via pip3)

Clone Repo

$ git clone https://github.com/bigchaindb/bigchaindb.git

Install

Bigchaindb Dependences

$ sudo bash bigchaindb/pkg/scripts/bootstrap.sh --operation install

Deploy Docker Compose

$ docker-compose -f bigchaindb/docker-compose.yaml up -d

Check Containers

$ sudo docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
6b9dcd4f524d bigchaindb_bigchaindb ".ci/entrypoint.sh" 32 minutes ago Up 32 minutes (healthy) 0.0.0.0:9984-9985->9984-9985/tcp, 0.0.0.0:32770->26658/tcp bigchaindb_bigchaindb_1
4b4c08cc3680 tendermint/tendermint:v0.31.5 "sh -c 'tendermint iโ€ฆ" 33 minutes ago Up 32 minutes 0.0.0.0:26656-26657->26656-26657/tcp bigchaindb_tendermint_1
443b20abbb7d mongo:3.6 "docker-entrypoint.sโ€ฆ" 33 minutes ago Up 32 minutes 0.0.0.0:27017->27017/tcp bigchaindb_mongodb_1
3afee461139c nginx "nginx -g 'daemon ofโ€ฆ" 33 minutes ago Up 32 minutes 0.0.0.0:33333->80/tcp bigchaindb_vdocs_1

Testing db

Create testdb.py to test your installation:

from bigchaindb_driver import BigchainDB
from bigchaindb_driver.crypto import generate_keypair
from time import sleep
from sys import exit

alice, bob = generate_keypair(), generate_keypair()

bdb_root_url = 'http://localhost:9984' # Use YOUR BigchainDB Root URL here

bdb = BigchainDB(bdb_root_url)

bicycle_asset = {
 'data': {
 'bicycle': {
 'serial_number': 'abcd1234',
 'manufacturer': 'bkfab'
 },
 },
}

bicycle_asset_metadata = {
 'planet': 'earth'
}

prepared_creation_tx = bdb.transactions.prepare(
 operation='CREATE',
 signers=alice.public_key,
 asset=bicycle_asset,
 metadata=bicycle_asset_metadata
)

fulfilled_creation_tx = bdb.transactions.fulfill(
 prepared_creation_tx,
 private_keys=alice.private_key
)

sent_creation_tx = bdb.transactions.send_commit(fulfilled_creation_tx)

txid = fulfilled_creation_tx['id']

asset_id = txid

transfer_asset = {
 'id': asset_id
}

output_index = 0
output = fulfilled_creation_tx['outputs'][output_index]

transfer_input = {
 'fulfillment': output['condition']['details'],
 'fulfills': {
 'output_index': output_index,
 'transaction_id': fulfilled_creation_tx['id']
 },
 'owners_before': output['public_keys']
}

prepared_transfer_tx = bdb.transactions.prepare(
 operation='TRANSFER',
 asset=transfer_asset,
 inputs=transfer_input,
 recipients=bob.public_key,
)

fulfilled_transfer_tx = bdb.transactions.fulfill(
 prepared_transfer_tx,
 private_keys=alice.private_key,
)

sent_transfer_tx = bdb.transactions.send_commit(fulfilled_transfer_tx)

print("Is Bob the owner?",
 sent_transfer_tx['outputs'][0]['public_keys'][0] == bob.public_key)

print("Was Alice the previous owner?",
 fulfilled_transfer_tx['inputs'][0]['owners_before'][0] == alice.public_key)

Execute Test Script

 $ python3 testdb.py 
 [out]Is Bob the owner? True
 [out]Was Alice the previous owner? True

References

Bigchaindb Docs - http://docs.bigchaindb.com/