All Projects → yeasy → docker-hyperledger-fabric-peer

yeasy / docker-hyperledger-fabric-peer

Licence: other
Docker image for Hyperledger Fabric Peer

Programming Languages

Dockerfile
14818 projects

Projects that are alternatives of or similar to docker-hyperledger-fabric-peer

readme
The Blockchain Bible,a collections for blockchain tech,bitcoin,ethereum,crypto currencies,cryptography,decentralized solutions,business scenarios,hyperledger tech,meetups,区块链,数字货币,加密货币,比特币,以太坊,密码学,去中心化,超级账本
Stars: ✭ 46 (+84%)
Mutual labels:  hyperledger, hyperledger-fabric
HealthLedger
Application for tracking Organs donations in hospitals and minimizing the scope of Organ trafficking using Blockchain (Hyperledger) technology.
Stars: ✭ 29 (+16%)
Mutual labels:  hyperledger, hyperledger-fabric
fabric-composer-engine-supplychain
Hyperledger Fabric & Composer example that models a consortium of car engine manufacturers, merchants and customers.
Stars: ✭ 19 (-24%)
Mutual labels:  hyperledger, hyperledger-fabric
Heroes Service
Short tutorial to build a blockchain application in Go with Hyperledger Fabric
Stars: ✭ 248 (+892%)
Mutual labels:  hyperledger, hyperledger-fabric
Pivt
Helm charts for running and operating Hyperledger Fabric in Kubernetes. Previously hosted at https://github.com/APGGroeiFabriek/PIVT.
Stars: ✭ 159 (+536%)
Mutual labels:  hyperledger, hyperledger-fabric
heroes-service-network
Short tutorial to build a blockchain network with Hyperledger Fabric
Stars: ✭ 22 (-12%)
Mutual labels:  hyperledger, hyperledger-fabric
Fabric Sdk Go
Stars: ✭ 712 (+2748%)
Mutual labels:  hyperledger, hyperledger-fabric
hlf-sdk-go
Hyperledger Fabric Golang SDK
Stars: ✭ 37 (+48%)
Mutual labels:  hyperledger, hyperledger-fabric
fabric-token-sdk
The Fabric Token SDK is a set of API and services that lets developers create token-based distributed application on Hyperledger Fabric.
Stars: ✭ 63 (+152%)
Mutual labels:  hyperledger, hyperledger-fabric
Blockchainbooks.github.io
Blockchain Books
Stars: ✭ 139 (+456%)
Mutual labels:  hyperledger, hyperledger-fabric
hlf-operator
Hyperledger Fabric Kubernetes operator - Hyperledger Fabric operator for Kubernetes (v2.2+)
Stars: ✭ 112 (+348%)
Mutual labels:  hyperledger, hyperledger-fabric
OpenTender
E-portal for government tender process using Hyperledger (Blockchain) technology.
Stars: ✭ 18 (-28%)
Mutual labels:  hyperledger, hyperledger-fabric
mastering-blockchain
blockchain basis,logic,usage
Stars: ✭ 29 (+16%)
Mutual labels:  hyperledger, hyperledger-fabric
hyperledger-fabric-sdk-php
Client SDK for Hyperledger Fabric for use in PHP applications
Stars: ✭ 40 (+60%)
Mutual labels:  hyperledger, hyperledger-fabric
bdk
Streamlined blockchain deployment kit for Hyperledger Fabric.
Stars: ✭ 43 (+72%)
Mutual labels:  hyperledger, hyperledger-fabric
Awesome Hyperledger Fabric
A curated list of resources for creating applications with hyperledger fabric
Stars: ✭ 349 (+1296%)
Mutual labels:  hyperledger, hyperledger-fabric
hurley
The development environment toolset for blockchain projects
Stars: ✭ 79 (+216%)
Mutual labels:  hyperledger, hyperledger-fabric
fablo
Fablo is a simple tool to generate the Hyperledger Fabric blockchain network and run it on Docker. It supports RAFT and solo consensus protocols, multiple organizations and channels, chaincode installation and upgrade.
Stars: ✭ 121 (+384%)
Mutual labels:  hyperledger, hyperledger-fabric
Fabric Gm Wiki
Fabric国密项目 wiki
Stars: ✭ 79 (+216%)
Mutual labels:  hyperledger, hyperledger-fabric
Fabric Starter
Starter Application and Deployment Scripts for Hyperledger Fabric
Stars: ✭ 202 (+708%)
Mutual labels:  hyperledger, hyperledger-fabric

Hyperledger Fabric Peer

Docker images for Hyperledger fabric peer.

Supported tags and respective Dockerfile links

For more information about this image and its history, please see the relevant manifest file in the yeasy/docker-hyperledger-fabric-peer GitHub repo.

If you want to quickly deploy a local cluster without any configuration and vagrant, please refer to Start hyperledger clsuter using compose.

What is docker-hyperledger-fabric-peer?

Docker image with hyperledger fabric peer deployed.

How to use this image?

The docker image is auto built at https://registry.hub.docker.com/u/yeasy/hyperledger-fabric-peer/.

In Dockerfile

FROM yeasy/hyperledger-fabric-peer:latest

Local Run with single node

The peer command is the main command, you can use it as the start part.

E.g., see the supported sub commands with the help command.

$ peer help
02:10:10.359 [crypto] main -> INFO 001 Log level recognized 'info', set to INFO


Usage:
  peer [command]

Available Commands:
  node        node specific commands.
  network     network specific commands.
  chaincode   chaincode specific commands.
  help        Help about any command

Flags:
      --logging-level="": Default logging level and overrides, see core.yaml for full syntax


Use "peer [command] --help" for more information about a command.

Hyperledger relies on a core.yaml file, you can mount your local one by

$ docker run -v your_local_core.yaml:/go/src/github.com/hyperledger/fabric/peer/core.yaml -d yeasy/hyperledger-fabric-peer peer node start help

The storage will be under /var/hyperledger/, which should be mounted from host for persistent requirement.

Your can also mapping the port outside using the -p options.

  • 7050: REST service listening port (Recommened to open at non-validating node)
  • 7051: Peer service listening port
  • 7052: CLI process use it for callbacks from chain code
  • 7053: Event service on validating node

Local Run with chaincode testing

Start your docker daemon with

$ sudo docker daemon --api-cors-header="*" -H tcp://0.0.0.0:2375 -H unix:///var/run/docker.sock

Pull necessary images, notice the default config require a local built openblockchain/baseimage. We can just use the yeasy/hyperledger image instead.

$ docker pull yeasy/hyperledger:latest
$ docker tag yeasy/hyperledger:latest hyperledger/fabric-baseimage:latest
$ docker pull yeasy/hyperledger-fabric-peer:latest

Check the docker0 bridge ip, normally it should be 172.17.0.1. This ip will be used as the CORE_VM_ENDPOINT=http://172.17.0.1:2375.

$  ip addr show dev docker0
4: docker0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN group default
    link/ether 02:42:f2:90:57:cf brd ff:ff:ff:ff:ff:ff
    inet 172.17.0.1/16 scope global docker0
    valid_lft forever preferred_lft forever
    inet6 fe80::42:f2ff:fe90:57cf/64 scope link
    valid_lft forever preferred_lft forever

Start a validating node.

Noops consensus

$ docker run --name=vp0 \
                    --restart=unless-stopped \
                    -it \
                    -p 7050:7050 \
                    -p 7051:7051 \
                    -v /var/run/docker.sock:/var/run/docker.sock \
                    -e CORE_PEER_ID=vp0 \
                    -e CORE_PEER_ADDRESSAUTODETECT=true \
                    -e CORE_NOOPS_BLOCK_TIMEOUT=10 \
                    yeasy/hyperledger-fabric-peer:latest peer node start

Or use your docker daemon url.

$ docker run --name=vp0 \
                    --restart=unless-stopped \
                    -it \
                    -p 7050:7050 \
                    -p 7051:7051 \
                    -e CORE_PEER_ID=vp0 \
                    -e CORE_VM_ENDPOINT=http://172.17.0.1:2375 \
                    -e CORE_PEER_ADDRESSAUTODETECT=true \
                    -e CORE_NOOPS_BLOCK_TIMEOUT=10 \
                    yeasy/hyperledger-fabric-peer:latest peer node start

PBFT consensus

PBFT requires at least 4 nodes.

$ git clone https://github.com/yeasy/docker-compose-files
$ cd docker-compose-files/hyperledger
$ docker-compose up

More details, please refer to hyperledger-compose-files.

After the cluster starts up, enter into the container

$ docker exec -it vp0 bash

Inside the container, deploy a chaincode using

$ peer chaincode deploy -p github.com/hyperledger/fabric/examples/chaincode/go/chaincode_example02 -c '{"Function":"init", "Args": ["a","100", "b", "200"]}'
13:16:35.643 [crypto] main -> INFO 001 Log level recognized 'info', set to INFO
5844bc142dcc9e788785e026e22c855957b2c754c912702c58d997dedbc9a042f05d152f6db0fbd7810d95c1b880c210566c9de3093aae0ab76ad2d90e9cfaa5

Query a's current value, which is 100.

$ peer chaincode query -n 5844bc142dcc9e788785e026e22c855957b2c754c912702c58d997dedbc9a042f05d152f6db0fbd7810d95c1b880c210566c9de3093aae0ab76ad2d90e9cfaa5 -c '{"Function": "query", "Args": ["a"]}'
13:20:07.952 [crypto] main -> INFO 001 Log level recognized 'info', set to INFO
100

Invoke a transaction of 10 from a to b.

$ peer chaincode invoke -n 5844bc142dcc9e788785e026e22c855957b2c754c912702c58d997dedbc9a042f05d152f6db0fbd7810d95c1b880c210566c9de3093aae0ab76ad2d90e9cfaa5 -c '{"Function": "invoke", "Args": ["a", "b", "10"]}'
13:20:31.028 [crypto] main -> INFO 001 Log level recognized 'info', set to INFO
ec3c675b-a2fe-4429-ab44-7f389e454657

Query a 's value now.

$ peer chaincode query -n 5844bc142dcc9e788785e026e22c855957b2c754c912702c58d997dedbc9a042f05d152f6db0fbd7810d95c1b880c210566c9de3093aae0ab76ad2d90e9cfaa5 -c '{"Function": "query", "Args": ["a"]}'
13:20:35.725 [crypto] main -> INFO 001 Log level recognized 'info', set to INFO
90

More examples, please refer to hyperledger-compose-files.

If you wanna manually start.

For root node:

docker run --name=node_vp0 \
                    -e CORE_PEER_ID=vp0 \
                    -e CORE_PBFT_GENERAL_N=4 \
                    --net="host" \
                    --restart=unless-stopped \
                    -it --rm \
                    -p 5500:7050 \
                    -p 7051:7051 \
                    -v /var/run/docker.sock:/var/run/docker.sock
                    -e CORE_LOGGING_LEVEL=debug \
                    -e CORE_PEER_ADDRESSAUTODETECT=true \
                    -e CORE_PEER_NETWORKID=dev \
                    -e CORE_PEER_VALIDATOR_CONSENSUS_PLUGIN=pbft \
                    -e CORE_PBFT_GENERAL_MODE=classic \
                    -e CORE_PBFT_GENERAL_TIMEOUT_REQUEST=10s \
                    yeasy/hyperledger-fabric-peer:latest peer node start

for non-root node:

docker run --name=node_vpX \
                    -e CORE_PEER_ID=vpX \
                    -e CORE_PBFT_GENERAL_N=4 \
                    --net="host" \
                    --restart=unless-stopped \
                    --rm -it \
                    -p 7051:7051 \
                    --net="hyperledger_cluster_net_pbft" \
                    -e CORE_LOGGING_LEVEL=debug \
                    -e CORE_PEER_ADDRESSAUTODETECT=true \
                    -e CORE_PEER_NETWORKID=dev \
                    -e CORE_PEER_VALIDATOR_CONSENSUS_PLUGIN=pbft \
                    -e CORE_PBFT_GENERAL_MODE=classic \
                    -e CORE_PBFT_GENERAL_TIMEOUT_REQUEST=10s \
                    -e CORE_PEER_DISCOVERY_ROOTNODE=vp0:7051 \
                    yeasy/hyperledger-fabric-peer:latest peer node start

Which image is based on?

The image is built based on Hyperledger Fabric Base image.

What has been changed?

install dependencies

Install required libsnappy-dev, zlib1g-dev, libbz2-dev.

install rocksdb

Install required rocksdb 4.1.

install hyperledger fabric peer

Install hyperledger fabric and build the peer

Supported Docker versions

This image is officially supported on Docker version 1.7.0+.

Support for older versions (down to 1.0) is provided on a best-effort basis.

Known Issues

  • N/A.

User Feedback

Documentation

Be sure to familiarize yourself with the repository's README.md file before attempting a pull request.

Issues

If you have any problems with or questions about this image, please contact us through a GitHub issue.

You can also reach many of the official image maintainers via the email.

Contributing

You are invited to contribute new features, fixes, or updates, large or small; we are always thrilled to receive pull requests, and do our best to process them as fast as we can.

Before you start to code, we recommend discussing your plans through a GitHub issue, especially for more ambitious contributions. This gives other contributors a chance to point you in the right direction, give you feedback on your design, and help you find out if someone else is working on the same thing.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].