tendermint/docker
Zach Ramsay 3f55cc3430 docs: use README.rst to be pulled from tendermint 2017-09-16 14:13:09 -04:00
..
basecoin Added dockerfiles for applications 2017-07-04 16:23:51 +00:00
ethermint Added dockerfiles for applications 2017-07-04 16:23:51 +00:00
tendermint Added dockerfiles for applications 2017-07-04 16:23:51 +00:00
README.rst docs: use README.rst to be pulled from tendermint 2017-09-16 14:13:09 -04:00

README.rst

Using Docker
============

`This folder <https://github.com/tendermint/tools/tree/master/docker>`__ contains Docker container descriptions. Using this folder
you can build your own Docker images with the tendermint application.

It is assumed that you have already setup docker.

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