Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

docs: improve docker README #3209

Closed
wants to merge 4 commits into from
Closed
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
247 changes: 152 additions & 95 deletions docker/README.md
Original file line number Diff line number Diff line change
@@ -1,120 +1,177 @@
# Celestia `txsim` Docker Image Usage Guide

The `txsim` binary is a tool that can be used to simulate transactions on the Celestia network. It can be used to test the performance of the Celestia network.
This guide provides instructions on how to use the Celestia `txsim` Docker image. The `txsim` Docker image is designed to run the `txsim` binary with a variety of configurable options.
Comment on lines -3 to -4
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think this is helpful as an opening sentence about this README document


## Table of Contents

1. [Celestia `txsim` Docker Image Usage Guide](#celestia-txsim-docker-image-usage-guide)
1. [Table of Contents](#table-of-contents)
2. [Prerequisites](#prerequisites)
3. [Running the Docker Image](#running-the-docker-image)
1. [Docker Run](#docker-run)
2. [Docker Compose](#docker-compose)
3. [Kubernetes Deployment](#kubernetes-deployment)
4. [Flag Breakdown](#flag-breakdown)
1. [Docker Setup](#docker-setup)
2. [Overview of celestia-app txsim](#overview-of-celestia-app-txsim)
3. [Prerequisites](#prerequisites)
4. [Quick-Start](#quick-start)
5. [Docker Compose](#docker-compose)
6. [Kubernetes Deployments](#kubernetes-deployment)
7. [Flag Breakdown](#flag-breakdown)

## 🐳 Docker setup

This documentation provides a step-by-step guide on how to start up a celestia
app using a docker image. Docker provides a seamless setup for celestia-app
in an isolated environment on your machine. With Docker,
you do not have to worry about the manual configuration of the required
dependencies, which can be a pain.

## Overview of celestia app txsim

The celestia-app `txsim` binary is a tool that can be
used to simulate transactions on the Celestia network.
The `txsim` Docker image is designed to run the `txsim` binary with a
variety of configurable options.

## Prerequisites

Before you can use the `txsim` Docker image, you must have a prefunded account set up. The `txsim` binary requires a prefunded account to function correctly. The keyring for this account should be stored in a file that can be accessed by the Docker container.
- [Docker Desktop for Mac or Windows](https://docs.docker.com/get-docker) or
[Docker Engine for Linux](https://docs.docker.com/engine/install/)
and a basic understanding of Docker.
Comment on lines +30 to +32
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The prerequisites section clearly outlines the necessary tools and knowledge. However, there's an unpaired symbol in the markdown link for Docker Desktop. Ensure all markdown links are correctly formatted.

- - [Docker Desktop for Mac or Windows](https://docs.docker.com/get-docker) or
+ - [Docker Desktop for Mac or Windows](https://docs.docker.com/get-docker) or

Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation.

Suggested change
- [Docker Desktop for Mac or Windows](https://docs.docker.com/get-docker) or
[Docker Engine for Linux](https://docs.docker.com/engine/install/)
and a basic understanding of Docker.
- [Docker Desktop for Mac or Windows](https://docs.docker.com/get-docker) or
[Docker Engine for Linux](https://docs.docker.com/engine/install/)
and a basic understanding of Docker.


- A prefunded account set up with the keyring stored in a file,
to be accessed by an instance of the docker image.

## Running the Docker Image
## Quick-Start

### Docker Run
1. In your local machine, navigate to the home directory

You can run the `txsim` Docker image using the `docker run` command. Here's an example:
```bash
cd $HOME
```

```bash
docker run -it -v ${HOME}/.celestia-app:/home/celestia ghcr.io/celestiaorg/txsim -k 0 -r http://consensus-validator-robusta-rc6.celestia-robusta.com:26657,http://consensus-full-robusta-rc6.celestia-robusta.com:26657 -g consensus-validator-robusta-rc6.celestia-robusta.com:9090 -t 10s -b 10 -d 100 -e 10
```
2. Create a file in which the keyring would be stored.
The file would be mounted as a volume into the docker container.

In this command, the `-v` option is used to mount the `${HOME}/.celestia-app` directory from the host to the `/home/celestia` directory in the Docker container. This allows the `txsim` binary to access the keyring for the prefunded account.
```bash
touch .celestia-app
```

### Docker Compose
3. Using a suitable text editor of your choice, open the
.celestia-app file and paste the keyring of the prefunded account.
Comment on lines +52 to +53
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

When instructing users to paste the keyring into the .celestia-app file, avoid putting a space before the full stop to maintain consistency and professionalism in documentation.

- .celestia-app file and paste the keyring of the prefunded account.
+ .celestia-app file and paste the keyring of the prefunded account.

Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation.

Suggested change
3. Using a suitable text editor of your choice, open the
.celestia-app file and paste the keyring of the prefunded account.
3. Using a suitable text editor of your choice, open the
.celestia-app file and paste the keyring of the prefunded account.

Comment on lines +52 to +53
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think it would be helpful here to tell people how they can setup the keyring using the celestia-appd keys subcommand. For example celestia-appd keys add txsim would create the key and print the mnemonic. That way you can either paste the mnemonic as a flag or copy the keyring directory across


You can also run the `txsim` Docker image using Docker Compose. Here's an example `docker-compose.yml` file:
4. We recommend that you set the necessary file permission for the
.celestia-app file. A simple read access is all that is required for the
docker container to access the content of the file.

```yaml
version: '3'
services:
txsim:
image: ghcr.io/celestiaorg/txsim
command: >
-k 0
-g consensus-validator-robusta-rc6.celestia-robusta.com:9090
-t 10s
-b 10
-d 100
-e 10
volumes:
- /Users/txsimp/.celestia-app:/home/celestia
```
5. You can run the txsim Docker image using the docker run command below.

In this file, the `volumes` key is used to mount the `/Users/txsimp/.celestia-app` directory from the host to the `/home/celestia` directory in the Docker container.
```bash
docker run -it \
-v $HOME/.celestia-app:/home/celestia ghcr.io/celestiaorg/txsim \
-k 0 \
-r http://consensus-validator-robusta-rc6.celestia-robusta.com:26657, \
http://consensus-full-robusta-rc6.celestia-robusta.com:26657 \
Comment on lines +65 to +66
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We can get rid of these two lines, as the tx sim no longer requires an rpc endpoint and the -r flag has been removed

-g consensus-validator-robusta-rc6.celestia-robusta.com: \
-t 10s -b 10 -d 100 -e 10
```

### Kubernetes Deployment
6. In this command, the -v option is used to mount the
$HOME/.celestia-app directory from the host to the /home/celestia
directory in the Docker container.
This allows the txsim binary to access the keyring for the prefunded account.

Finally, you can run the `txsim` Docker image in a Kubernetes cluster. Here's an example `deployment.yaml` file:
Congratulations! You have successfuly set up celestia-app in Docker 😎.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The congratulatory message for successfully setting up the Celestia app in Docker contains a spelling mistake. Correct "successfuly" to "successfully" to maintain professionalism in the documentation.

- Congratulations! You have successfuly set up celestia-app in Docker 😎.
+ Congratulations! You have successfully set up celestia-app in Docker 😎.

Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation.

Suggested change
Congratulations! You have successfuly set up celestia-app in Docker 😎.
Congratulations! You have successfully set up celestia-app in Docker 😎.


```yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: txsim-deployment
spec:
replicas: 1
selector:
matchLabels:
app: txsim
template:
metadata:
labels:
## Docker Compose

You can also run the `txsim` Docker image using Docker Compose.
Here's an example `docker-compose.yml` file:

```yaml
version: '3'
services:
txsim:
image: ghcr.io/celestiaorg/txsim
command: >
-k 0
-g consensus-validator-robusta-rc6.celestia-robusta.com:9090
-t 10s
-b 10
-d 100
-e 10
volumes:
- /Users/txsimp/.celestia-app:/home/celestia
```

In this file, the `volumes` key is used to mount
the `/Users/txsimp/.celestia-app directory from the host to
the `/home/celestia` directory in the Docker container.

## Kubernetes Deployment

Finally, you can run the `txsim` Docker image in a Kubernetes cluster.
Here's an example `deployment.yaml` file:

```yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: txsim-deployment
spec:
replicas: 1
selector:
matchLabels:
app: txsim
spec:
containers:
- name: txsim
image: ghcr.io/celestiaorg/txsim
args:
- "-k"
- "0"
- "-g"
- "consensus-validator-robusta-rc6.celestia-robusta.com:9090"
- "-t"
- "10s"
- "-b"
- "10"
- "-d"
- "100"
- "-e"
- "10"
volumeMounts:
template:
metadata:
labels:
app: txsim
spec:
containers:
- name: txsim
image: ghcr.io/celestiaorg/txsim
args:
- "-k"
- "0"
- "-g"
- "consensus-validator-robusta-rc6.celestia-robusta.com:9090"
- "-t"
- "10s"
- "-b"
- "10"
- "-d"
- "100"
- "-e"
- "10"
volumeMounts:
- name: keyring-volume
mountPath: /home/celestia
volumes:
- name: keyring-volume
mountPath: /home/celestia
volumes:
- name: keyring-volume
hostPath:
path: /Users/txsimp/.celestia-app
```
hostPath:
path: /Users/txsimp/.celestia-app
```

In this file, the `volumeMounts` and `volumes` keys are used to mount the `/Users/txsimp/.celestia-app` directory from the host to the `/home/celestia` directory in the Docker container.
In this file, the `volumeMounts` and `volumes` keys are used to mount the
`/Users/txsimp/.celestia-app` directory from the host to the `/home/celestia`
directory in the Docker container.

## Flag Breakdown

Here's a breakdown of what each flag means:

- `-k`: Whether a new key should be created (1 for yes, 0 for no)
- `-p`: The path to the keyring for the prefunded account
- `-g`: The gRPC endpoint for the `txsim` binary
- `-t`: The poll time for the `txsim` binary
- `-b`: The number of blob sequences to run
- `-a`: The range of blobs to send per PFB in a sequence
- `-s`: The range of blob sizes to send
- `-m`: The mnemonic for the keyring
- `-d`: The seed for the random number generator
- `-e`: The number of send sequences to run
- `-i`: The amount to send from one account to another
- `-v`: The number of send iterations to run per sequence
- `-u`: The number of stake sequences to run
- `-w`: The amount of initial stake per sequence

Please replace the placeholders in the examples with the actual values you want to use.
The table below provides a brief explanation of the
flags used in the docker run command in step 5 of the quick start instructions.

| FLAG | DESCRIPTION | DEFAULT | OPTION |
| ---- | ---- | ---- | :----: |
|`-k`|Whether a new key should be created|0|1 for yes, 0 for no|
|`-p`|Path to keyring for prefunded account|-|-|
|`-g`|gRPC endpoint|consensus-validator-robusta-rc6.celestia-robusta.com:9090||
|`-t`|Poll time for the `txsim` binary|10s|1s,2s,3s,4s,...|
|`-b`|Number of blob sequences to run|10|any integer value(1,2,3,...)|
|`-a`|Range of blobs to send per PFB in a sequence|-|-|
|`-s`|Range of blob sizes to send|-|-|
|`-m`|Mnemonic for the keyring |-|-|
|`-d`|Seed for the random number generator|100|any integer value (1,2,3,...)|
|`-e`|Number of send sequences to run|10|any integer value (1,2,3,...)|
|`-i`|Amount to send from one account to another|-|any integer value (1,2,3,...)|
|`-v`|Number of send iterations to run per sequence|-|any integer value (1,2,3,...)|
|`-u`|Number of stake sequences to run|-|any integer value (1,2,3,...)|
|`-w`|Amount of initial stake per sequence|-|any integer value (1,2,3,...)|
Comment on lines +157 to +172
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

👍 I like the use of the table


Kindly replace the placeholders in the example docker run
command in step 5 of the quick start instructions,
with the actual values you want to use.

Loading