mirror of
https://github.com/fluencelabs/tendermint
synced 2025-04-28 16:22:15 +00:00
129 lines
3.6 KiB
ReStructuredText
129 lines
3.6 KiB
ReStructuredText
|
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
|