|
|
@ -0,0 +1,95 @@ |
|
|
|
# Docker container description for Tendermint applications |
|
|
|
|
|
|
|
* Overview (#Overview) |
|
|
|
* Tendermint (#Tendermint) |
|
|
|
* Basecoin (#Basecoin) |
|
|
|
* Ethermint (#Ethermint) |
|
|
|
|
|
|
|
## Overview |
|
|
|
|
|
|
|
This folder contains Docker container descriptions. Using this folder you can build your own Docker images with the tendermint application. |
|
|
|
|
|
|
|
It is assumed that you set up docker already. |
|
|
|
|
|
|
|
If you don't want to build the images yourself, you should be able to download them from Docker Hub. |
|
|
|
|
|
|
|
## Tendermint |
|
|
|
|
|
|
|
Build the container: |
|
|
|
Copy the `tendermint` binary to the `tendermint` folder. |
|
|
|
``` |
|
|
|
docker build -t tendermint tendermint |
|
|
|
``` |
|
|
|
|
|
|
|
The application configuration will be stored at `/tendermint` in the container. The ports 46656 and 46657 will be open for ABCI applications to connect. |
|
|
|
|
|
|
|
Initialize tendermint configuration and keep it after the container is finished in a docker volume called `data`: |
|
|
|
``` |
|
|
|
docker run --rm -v data:/tendermint tendermint init |
|
|
|
``` |
|
|
|
If you want the docker volume to be a physical directory on your filesystem, you have to give an absolute path to docker and make sure the permissions allow the application to write it. |
|
|
|
|
|
|
|
Get the public key of tendermint: |
|
|
|
``` |
|
|
|
docker run --rm -v data:/tendermint tendermint show_validator |
|
|
|
``` |
|
|
|
|
|
|
|
Run the docker tendermint application with: |
|
|
|
``` |
|
|
|
docker run --rm -d -v data:/tendermint tendermint node |
|
|
|
``` |
|
|
|
|
|
|
|
## Basecoin |
|
|
|
|
|
|
|
Build the container: |
|
|
|
Copy the `basecoin` binary to the `basecoin` folder. |
|
|
|
``` |
|
|
|
docker build -t basecoin basecoin |
|
|
|
``` |
|
|
|
The application configuration will be stored at `/basecoin`. |
|
|
|
|
|
|
|
Initialize basecoin configuration and keep it after the container is finished: |
|
|
|
``` |
|
|
|
docker run --rm -v basecoindata:/basecoin basecoin init deadbeef |
|
|
|
``` |
|
|
|
Use your own basecoin account instead of `deadbeef` in the `init` command. |
|
|
|
|
|
|
|
Get the public key of basecoin: |
|
|
|
We use a trick here: since the basecoin and the tendermint configuration folders are similar, the `tendermint` command can extract the public key for us if we feed the basecoin configuration folder to tendermint. |
|
|
|
``` |
|
|
|
docker run --rm -v basecoindata:/tendermint tendermint show_validator |
|
|
|
``` |
|
|
|
|
|
|
|
Run the docker tendermint application with: |
|
|
|
This is a two-step process: |
|
|
|
* Run the basecoin container. |
|
|
|
* Run the tendermint container and expose the ports that allow clients to connect. The --proxy_app should contain the basecoin application's IP address and port. |
|
|
|
``` |
|
|
|
docker run --rm -d -v basecoindata:/basecoin basecoin start --without-tendermint |
|
|
|
docker run --rm -d -v data:/tendermint -p 46656-46657:46656-46657 tendermint node --proxy_app tcp://172.17.0.2:46658 |
|
|
|
``` |
|
|
|
|
|
|
|
## Ethermint |
|
|
|
|
|
|
|
Build the container: |
|
|
|
Copy the `ethermint` binary and the setup folder to the `ethermint` folder. |
|
|
|
``` |
|
|
|
docker build -t ethermint ethermint |
|
|
|
``` |
|
|
|
The application configuration will be stored at `/ethermint`. |
|
|
|
The files required for initializing ethermint (the files in the source `setup` folder) are under `/setup`. |
|
|
|
|
|
|
|
Initialize ethermint configuration: |
|
|
|
``` |
|
|
|
docker run --rm -v ethermintdata:/ethermint ethermint init /setup/genesis.json |
|
|
|
``` |
|
|
|
|
|
|
|
Start ethermint as a validator node: |
|
|
|
This is a two-step process: |
|
|
|
* Run the ethermint container. You will have to define where tendermint runs as the ethermint binary connects to it explicitly. |
|
|
|
* Run the tendermint container and expose the ports that allow clients to connect. The --proxy_app should contain the ethermint application's IP address and port. |
|
|
|
``` |
|
|
|
docker run --rm -d -v ethermintdata:/ethermint ethermint --tendermint_addr tcp://172.17.0.3:46657 |
|
|
|
docker run --rm -d -v data:/tendermint -p 46656-46657:46656-46657 tendermint node --proxy_app tcp://172.17.0.2:46658 |
|
|
|
``` |
|
|
|
|