Jae Kwon b51ed132f7 | 7 years ago | |
---|---|---|
.. | ||
atomic_broadcast | 7 years ago | |
basic | 7 years ago | |
data | 7 years ago | |
fast_sync | 7 years ago | |
kill_all | 7 years ago | |
pex | 7 years ago | |
README.md | 7 years ago | |
circleci.sh | 7 years ago | |
client.sh | 8 years ago | |
ip.sh | 7 years ago | |
ip_plus_id.sh | 7 years ago | |
local_testnet_start.sh | 7 years ago | |
local_testnet_stop.sh | 8 years ago | |
peer.sh | 7 years ago | |
persistent_peers.sh | 7 years ago | |
test.sh | 7 years ago |
These scripts facilitate setting up and testing a local testnet using docker containers.
Setup your own local testnet as follows.
For consistency, we assume all commands are run from the Tendermint repository root (ie. $GOPATH/src/github.com/tendermint/tendermint).
First, build the docker image:
docker build -t tendermint_tester -f ./test/docker/Dockerfile .
Now create the docker network:
docker network create --driver bridge --subnet 172.57.0.0/16 my_testnet
This gives us a new network with IP addresses in the rage 172.57.0.0 - 172.57.255.255
.
Peers on the network can have any IP address in this range.
For our four node network, let's pick 172.57.0.101 - 172.57.0.104
.
Since we use Tendermint's default listening port of 26656, our list of seed nodes will look like:
172.57.0.101:26656,172.57.0.102:26656,172.57.0.103:26656,172.57.0.104:26656
Now we can start up the peers. We already have config files setup in test/p2p/data/
.
Let's use a for-loop to start our peers:
for i in $(seq 1 4); do
docker run -d \
--net=my_testnet\
--ip="172.57.0.$((100 + $i))" \
--name local_testnet_$i \
--entrypoint tendermint \
-e TMHOME=/go/src/github.com/tendermint/tendermint/test/p2p/data/mach$i/core \
tendermint_tester node --p2p.persistent_peers 172.57.0.101:26656,172.57.0.102:26656,172.57.0.103:26656,172.57.0.104:26656 --proxy_app=kvstore
done
If you now run docker ps
, you'll see your containers!
We can confirm they are making blocks by checking the /status
message using curl
and jq
to pretty print the output json:
curl 172.57.0.101:26657/status | jq .