mirror of
https://github.com/fluencelabs/tendermint
synced 2025-04-30 09:12:14 +00:00
96 lines
3.5 KiB
Markdown
96 lines
3.5 KiB
Markdown
# 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
|
|
```
|
|
|