From b7ef4caa2607f23b965e0f4269765e146750a72f Mon Sep 17 00:00:00 2001 From: Sylvain Bellemare Date: Tue, 14 Nov 2017 22:36:29 +0100 Subject: [PATCH] Add dev setup of 4 nodes with docker-compose --- .gitignore | 1 + compose/bigchaindb-server/Dockerfile | 10 +- docker-compose.network.yml | 170 +++++++++++++++++++++++++++ network/node1/config.toml | 18 +++ network/node1/genesis.json | 39 ++++++ network/node1/priv_validator.json | 1 + network/node2/config.toml | 19 +++ network/node2/genesis.json | 39 ++++++ network/node2/priv_validator.json | 1 + network/node3/config.toml | 18 +++ network/node3/genesis.json | 39 ++++++ network/node3/priv_validator.json | 1 + network/node4/config.toml | 20 ++++ network/node4/genesis.json | 39 ++++++ network/node4/priv_validator.json | 1 + 15 files changed, 414 insertions(+), 2 deletions(-) create mode 100644 docker-compose.network.yml create mode 100644 network/node1/config.toml create mode 100644 network/node1/genesis.json create mode 100644 network/node1/priv_validator.json create mode 100644 network/node2/config.toml create mode 100644 network/node2/genesis.json create mode 100644 network/node2/priv_validator.json create mode 100644 network/node3/config.toml create mode 100644 network/node3/genesis.json create mode 100644 network/node3/priv_validator.json create mode 100644 network/node4/config.toml create mode 100644 network/node4/genesis.json create mode 100644 network/node4/priv_validator.json diff --git a/.gitignore b/.gitignore index b8b1e17b..84d9b151 100644 --- a/.gitignore +++ b/.gitignore @@ -87,3 +87,4 @@ terraform.tfstate.backup # tendermint data tmdata/data +network/*/data diff --git a/compose/bigchaindb-server/Dockerfile b/compose/bigchaindb-server/Dockerfile index fdd883a5..4abd8af8 100644 --- a/compose/bigchaindb-server/Dockerfile +++ b/compose/bigchaindb-server/Dockerfile @@ -8,8 +8,12 @@ RUN apt-get update \ && apt-get autoremove \ && apt-get clean -ENV PYTHONUNBUFFERED=0 +ARG backend +ENV PYTHONUNBUFFERED 0 + +ENV BIGCHAINDB_DATABASE_PORT 27017 +ENV BIGCHAINDB_DATABASE_BACKEND $backend ENV BIGCHAINDB_SERVER_BIND 0.0.0.0:9984 ENV BIGCHAINDB_WSSERVER_HOST 0.0.0.0 ENV BIGCHAINDB_WSSERVER_SCHEME ws @@ -17,7 +21,9 @@ ENV BIGCHAINDB_WSSERVER_SCHEME ws ENV BIGCHAINDB_WSSERVER_ADVERTISED_HOST 0.0.0.0 ENV BIGCHAINDB_WSSERVER_ADVERTISED_SCHEME ws -ARG backend +ENV BIGCHAINDB_START_TENDERMINT 0 +ENV TENDERMINT_PORT 46657 + RUN mkdir -p /usr/src/app COPY . /usr/src/app/ diff --git a/docker-compose.network.yml b/docker-compose.network.yml new file mode 100644 index 00000000..311b8035 --- /dev/null +++ b/docker-compose.network.yml @@ -0,0 +1,170 @@ +version: '3' + +services: + + ############################################################################# + # # + # NODE 1 # + # # + ############################################################################# + mdb-one: + image: mongo:3.4.3 + ports: + - "27017" + command: mongod + bdb-one: + depends_on: + - mdb-one + - tendermint-one + build: + context: . + dockerfile: ./compose/bigchaindb-server/Dockerfile + args: + backend: localmongodb + volumes: + - ./bigchaindb:/usr/src/app/bigchaindb + - ./tests:/usr/src/app/tests + environment: + BIGCHAINDB_DATABASE_BACKEND: localmongodb + BIGCHAINDB_DATABASE_HOST: mdb-one + TENDERMINT_HOST: tendermint-one + ports: + - "9984" + command: bigchaindb -l DEBUG start --init + tendermint-one: + image: tendermint/tendermint + volumes: + - ./network/node1:/tendermint + entrypoint: '' + command: bash -c "tendermint unsafe_reset_all && tendermint --log_level debug node" + + + ############################################################################# + # # + # NODE 2 # + # # + ############################################################################# + mdb-two: + image: mongo:3.4.3 + ports: + - "27017" + command: mongod + bdb-two: + depends_on: + - mdb-two + - tendermint-two + build: + context: . + dockerfile: ./compose/bigchaindb-server/Dockerfile + args: + backend: localmongodb + volumes: + - ./bigchaindb:/usr/src/app/bigchaindb + - ./tests:/usr/src/app/tests + environment: + BIGCHAINDB_DATABASE_BACKEND: localmongodb + BIGCHAINDB_DATABASE_HOST: mdb-two + TENDERMINT_HOST: tendermint-two + ports: + - "9984" + command: bigchaindb -l DEBUG start --init + tendermint-two: + image: tendermint/tendermint + volumes: + - ./network/node2:/tendermint + entrypoint: '' + command: bash -c "tendermint unsafe_reset_all && tendermint --log_level debug node" + + + ############################################################################# + # # + # NODE 3 # + # # + ############################################################################# + mdb-three: + image: mongo:3.4.3 + ports: + - "27017" + command: mongod + bdb-three: + depends_on: + - mdb-three + - tendermint-three + build: + context: . + dockerfile: ./compose/bigchaindb-server/Dockerfile + args: + backend: localmongodb + volumes: + - ./bigchaindb:/usr/src/app/bigchaindb + - ./tests:/usr/src/app/tests + environment: + BIGCHAINDB_DATABASE_BACKEND: localmongodb + BIGCHAINDB_DATABASE_HOST: mdb-three + TENDERMINT_HOST: tendermint-three + ports: + - "9984" + command: bigchaindb -l DEBUG start --init + tendermint-three: + image: tendermint/tendermint + volumes: + - ./network/node3:/tendermint + entrypoint: '' + command: bash -c "tendermint unsafe_reset_all && tendermint --log_level debug node" + + + ############################################################################# + # # + # NODE 4 # + # # + ############################################################################# + mdb-four: + image: mongo:3.4.3 + ports: + - "27017" + command: mongod + bdb-four: + depends_on: + - mdb-four + - tendermint-four + build: + context: . + dockerfile: ./compose/bigchaindb-server/Dockerfile + args: + backend: localmongodb + volumes: + - ./bigchaindb:/usr/src/app/bigchaindb + - ./tests:/usr/src/app/tests + environment: + BIGCHAINDB_DATABASE_BACKEND: localmongodb + BIGCHAINDB_DATABASE_HOST: mdb-four + TENDERMINT_HOST: tendermint-four + ports: + - "9984" + command: bigchaindb -l DEBUG start --init + tendermint-four: + image: tendermint/tendermint + volumes: + - ./network/node4:/tendermint + entrypoint: '' + command: bash -c "tendermint unsafe_reset_all && tendermint --log_level debug node" + + + ############################################################################# + ############################################################################# + ############################################################################# + # + # clients + # + ############################################################################# + ############################################################################# + ############################################################################# + curl-client: + image: appropriate/curl + volumes: + - ./network/health-check.sh:/health-check.sh + command: /bin/sh health-check.sh + driver: + build: + context: . + dockerfile: ./compose/bigchaindb-driver/Dockerfile diff --git a/network/node1/config.toml b/network/node1/config.toml new file mode 100644 index 00000000..cff66cac --- /dev/null +++ b/network/node1/config.toml @@ -0,0 +1,18 @@ +# This is a TOML config file. +# For more information, see https://github.com/toml-lang/toml + +proxy_app = "tcp://bdb-one:46658" +moniker = "anonymous" +fast_sync = true +db_backend = "leveldb" +log_level = "state:info,*:error" + +[consensus] +create_empty_blocks = false + +[rpc] +laddr = "tcp://0.0.0.0:46657" + +[p2p] +laddr = "tcp://0.0.0.0:46656" +seeds = "" diff --git a/network/node1/genesis.json b/network/node1/genesis.json new file mode 100644 index 00000000..3b831b02 --- /dev/null +++ b/network/node1/genesis.json @@ -0,0 +1,39 @@ +{ + "genesis_time": "0001-01-01T00:00:00Z", + "chain_id": "test-chain-KPI1Ud", + "validators": [ + { + "pub_key": { + "type":"ed25519", + "data":"60C55D531F87D9AA0DFA3AE2DC1842FBFB531DA2161BE3B8D6CC03948CFC39C8" + }, + "power": 10, + "name": "node1" + }, + { + "pub_key": { + "type": "ed25519", + "data": "981B3879F24CAC4833AFC7EBB71AAEBE79C61E717D7791295B253E7A8E454518" + }, + "power": 10, + "name": "node2" + }, + { + "pub_key": { + "type": "ed25519", + "data": "E8C4FEE10BA60982CBD9C41614CF42E31E3DF9FE50124BA4C0A5E3CEA897DA9F" + }, + "power": 10, + "name": "node3" + }, + { + "pub_key": { + "type": "ed25519", + "data": "531248E1D7E35EDB26F0C19F3211FA5CFDA818B226F1F9206D0D2047B48B20B9" + }, + "power": 10, + "name": "node4" + } + ], + "app_hash":"" +} diff --git a/network/node1/priv_validator.json b/network/node1/priv_validator.json new file mode 100644 index 00000000..8982ab4a --- /dev/null +++ b/network/node1/priv_validator.json @@ -0,0 +1 @@ +{"address":"F81B79DE3F8D8455F76BA1D2FCB62726D69B1253","pub_key":{"type":"ed25519","data":"60C55D531F87D9AA0DFA3AE2DC1842FBFB531DA2161BE3B8D6CC03948CFC39C8"},"last_height":0,"last_round":0,"last_step":0,"last_signature":null,"priv_key":{"type":"ed25519","data":"CD6BAD1433AA62AD9B384C49FD83507829FE39306FC0475903CCF0BA114FCCCB60C55D531F87D9AA0DFA3AE2DC1842FBFB531DA2161BE3B8D6CC03948CFC39C8"}} \ No newline at end of file diff --git a/network/node2/config.toml b/network/node2/config.toml new file mode 100644 index 00000000..fd9712ba --- /dev/null +++ b/network/node2/config.toml @@ -0,0 +1,19 @@ +# This is a TOML config file. +# For more information, see https://github.com/toml-lang/toml + +proxy_app = "tcp://bdb-two:46658" +moniker = "anonymous" +fast_sync = true +db_backend = "leveldb" +log_level = "state:info,*:error" + +[consensus] +create_empty_blocks = false + +[rpc] +laddr = "tcp://0.0.0.0:46657" + +# TODO peers +[p2p] +laddr = "tcp://0.0.0.0:46656" +seeds = "tendermint-one:46656" diff --git a/network/node2/genesis.json b/network/node2/genesis.json new file mode 100644 index 00000000..3b831b02 --- /dev/null +++ b/network/node2/genesis.json @@ -0,0 +1,39 @@ +{ + "genesis_time": "0001-01-01T00:00:00Z", + "chain_id": "test-chain-KPI1Ud", + "validators": [ + { + "pub_key": { + "type":"ed25519", + "data":"60C55D531F87D9AA0DFA3AE2DC1842FBFB531DA2161BE3B8D6CC03948CFC39C8" + }, + "power": 10, + "name": "node1" + }, + { + "pub_key": { + "type": "ed25519", + "data": "981B3879F24CAC4833AFC7EBB71AAEBE79C61E717D7791295B253E7A8E454518" + }, + "power": 10, + "name": "node2" + }, + { + "pub_key": { + "type": "ed25519", + "data": "E8C4FEE10BA60982CBD9C41614CF42E31E3DF9FE50124BA4C0A5E3CEA897DA9F" + }, + "power": 10, + "name": "node3" + }, + { + "pub_key": { + "type": "ed25519", + "data": "531248E1D7E35EDB26F0C19F3211FA5CFDA818B226F1F9206D0D2047B48B20B9" + }, + "power": 10, + "name": "node4" + } + ], + "app_hash":"" +} diff --git a/network/node2/priv_validator.json b/network/node2/priv_validator.json new file mode 100644 index 00000000..cd1d9b95 --- /dev/null +++ b/network/node2/priv_validator.json @@ -0,0 +1 @@ +{"address":"0DDAB4527921A5E36C099A3260900E8B49F55096","pub_key":{"type":"ed25519","data":"981B3879F24CAC4833AFC7EBB71AAEBE79C61E717D7791295B253E7A8E454518"},"last_height":0,"last_round":0,"last_step":0,"last_signature":null,"priv_key":{"type":"ed25519","data":"BE14C56DA02B1FEBD101EF6EF986F3F2984C0ABE96FEE9FEC9616384CC4F71FF981B3879F24CAC4833AFC7EBB71AAEBE79C61E717D7791295B253E7A8E454518"}} \ No newline at end of file diff --git a/network/node3/config.toml b/network/node3/config.toml new file mode 100644 index 00000000..1b729978 --- /dev/null +++ b/network/node3/config.toml @@ -0,0 +1,18 @@ +# This is a TOML config file. +# For more information, see https://github.com/toml-lang/toml + +proxy_app = "tcp://bdb-three:46658" +moniker = "anonymous" +fast_sync = true +db_backend = "leveldb" +log_level = "state:info,*:error" + +[consensus] +create_empty_blocks = false + +[rpc] +laddr = "tcp://0.0.0.0:46657" + +[p2p] +laddr = "tcp://0.0.0.0:46656" +seeds = "tendermint-two:46656" diff --git a/network/node3/genesis.json b/network/node3/genesis.json new file mode 100644 index 00000000..3b831b02 --- /dev/null +++ b/network/node3/genesis.json @@ -0,0 +1,39 @@ +{ + "genesis_time": "0001-01-01T00:00:00Z", + "chain_id": "test-chain-KPI1Ud", + "validators": [ + { + "pub_key": { + "type":"ed25519", + "data":"60C55D531F87D9AA0DFA3AE2DC1842FBFB531DA2161BE3B8D6CC03948CFC39C8" + }, + "power": 10, + "name": "node1" + }, + { + "pub_key": { + "type": "ed25519", + "data": "981B3879F24CAC4833AFC7EBB71AAEBE79C61E717D7791295B253E7A8E454518" + }, + "power": 10, + "name": "node2" + }, + { + "pub_key": { + "type": "ed25519", + "data": "E8C4FEE10BA60982CBD9C41614CF42E31E3DF9FE50124BA4C0A5E3CEA897DA9F" + }, + "power": 10, + "name": "node3" + }, + { + "pub_key": { + "type": "ed25519", + "data": "531248E1D7E35EDB26F0C19F3211FA5CFDA818B226F1F9206D0D2047B48B20B9" + }, + "power": 10, + "name": "node4" + } + ], + "app_hash":"" +} diff --git a/network/node3/priv_validator.json b/network/node3/priv_validator.json new file mode 100644 index 00000000..9235931e --- /dev/null +++ b/network/node3/priv_validator.json @@ -0,0 +1 @@ +{"address":"F51FD23581F3FA49C68BBDC229461F24EBE202BE","pub_key":{"type":"ed25519","data":"E8C4FEE10BA60982CBD9C41614CF42E31E3DF9FE50124BA4C0A5E3CEA897DA9F"},"last_height":0,"last_round":0,"last_step":0,"last_signature":null,"priv_key":{"type":"ed25519","data":"E9849DEE8A524F00530EF1A486AD8E93A3AD2FCE4BD59F2F08282AD2BE3AE183E8C4FEE10BA60982CBD9C41614CF42E31E3DF9FE50124BA4C0A5E3CEA897DA9F"}} \ No newline at end of file diff --git a/network/node4/config.toml b/network/node4/config.toml new file mode 100644 index 00000000..91a09ffb --- /dev/null +++ b/network/node4/config.toml @@ -0,0 +1,20 @@ +# This is a TOML config file. +# This is a TOML config file. +# This is a TOML config file. +# For more information, see https://github.com/toml-lang/toml + +proxy_app = "tcp://bdb-four:46658" +moniker = "anonymous" +fast_sync = true +db_backend = "leveldb" +log_level = "state:info,*:error" + +[consensus] +create_empty_blocks = false + +[rpc] +laddr = "tcp://0.0.0.0:46657" + +[p2p] +laddr = "tcp://0.0.0.0:46656" +seeds = "tendermint-one:46656,tendermint-three:46656" diff --git a/network/node4/genesis.json b/network/node4/genesis.json new file mode 100644 index 00000000..3b831b02 --- /dev/null +++ b/network/node4/genesis.json @@ -0,0 +1,39 @@ +{ + "genesis_time": "0001-01-01T00:00:00Z", + "chain_id": "test-chain-KPI1Ud", + "validators": [ + { + "pub_key": { + "type":"ed25519", + "data":"60C55D531F87D9AA0DFA3AE2DC1842FBFB531DA2161BE3B8D6CC03948CFC39C8" + }, + "power": 10, + "name": "node1" + }, + { + "pub_key": { + "type": "ed25519", + "data": "981B3879F24CAC4833AFC7EBB71AAEBE79C61E717D7791295B253E7A8E454518" + }, + "power": 10, + "name": "node2" + }, + { + "pub_key": { + "type": "ed25519", + "data": "E8C4FEE10BA60982CBD9C41614CF42E31E3DF9FE50124BA4C0A5E3CEA897DA9F" + }, + "power": 10, + "name": "node3" + }, + { + "pub_key": { + "type": "ed25519", + "data": "531248E1D7E35EDB26F0C19F3211FA5CFDA818B226F1F9206D0D2047B48B20B9" + }, + "power": 10, + "name": "node4" + } + ], + "app_hash":"" +} diff --git a/network/node4/priv_validator.json b/network/node4/priv_validator.json new file mode 100644 index 00000000..03ce5f64 --- /dev/null +++ b/network/node4/priv_validator.json @@ -0,0 +1 @@ +{"address":"EB1E972D69E212E928CD98B581E50233E9C43F51","pub_key":{"type":"ed25519","data":"531248E1D7E35EDB26F0C19F3211FA5CFDA818B226F1F9206D0D2047B48B20B9"},"last_height":0,"last_round":0,"last_step":0,"last_signature":null,"priv_key":{"type":"ed25519","data":"864CA8AB5B2F3CBD42994381648D6F75E827E0D53C3B28872E03D7AEB2E10F14531248E1D7E35EDB26F0C19F3211FA5CFDA818B226F1F9206D0D2047B48B20B9"}} \ No newline at end of file