Some checks are pending
Docs Deploy / build_and_deploy (push) Waiting to run
Generate Docs / cli (push) Waiting to run
Generate Config Doc / cli (push) Waiting to run
Go formatting / go-formatting (push) Waiting to run
Check links / markdown-link-check (push) Waiting to run
Integration / pre-test (push) Waiting to run
Integration / test on (push) Blocked by required conditions
Integration / status (push) Blocked by required conditions
Lint / Lint Go code (push) Waiting to run
Test / test (ubuntu-latest) (push) Waiting to run
142 lines
5.1 KiB
Markdown
142 lines
5.1 KiB
Markdown
---
|
|
description: Run IGNITE® CLI using a Docker container.
|
|
---
|
|
|
|
# Running inside a Docker container
|
|
|
|
You can run IGNITE® CLI inside a Docker container without installing the IGNITE®
|
|
CLI binary directly on your machine.
|
|
|
|
Running IGNITE® CLI in Docker can be useful for various reasons; isolating your
|
|
test environment, running IGNITE® CLI on an unsupported operating system, or
|
|
experimenting with a different version of IGNITE® CLI without installing it.
|
|
|
|
Docker containers are like virtual machines because they provide an isolated
|
|
environment to programs that runs inside them. In this case, you can run IGNITE®
|
|
CLI in an isolated environment.
|
|
|
|
Experimentation and file system impact is limited to the Docker instance. The
|
|
host machine is not impacted by changes to the container.
|
|
|
|
## Prerequisites
|
|
|
|
Docker must be installed. See [Get Started with
|
|
Docker](https://www.docker.com/get-started).
|
|
|
|
## IGNITE® CLI Commands in Docker
|
|
|
|
After you scaffold and start a chain in your Docker container, all IGNITE® CLI
|
|
commands are available. Just type the commands after `docker run -ti
|
|
ignite/cli`. For example:
|
|
|
|
```bash
|
|
docker run -ti ignitehq/cli -h
|
|
docker run -ti ignitehq/cli scaffold chain planet
|
|
docker run -ti ignitehq/cli chain serve
|
|
```
|
|
|
|
## Scaffolding a chain
|
|
|
|
When Docker is installed, you can build a blockchain with a single command.
|
|
|
|
IGNITE® CLI, and the chains you serve with IGNITE® CLI, persist some files. When
|
|
using the CLI binary directly, those files are located in `$HOME/.ignite` and
|
|
`$HOME/.cache`, but in the context of Docker it's better to use a directory
|
|
different from `$HOME`, so we use `$HOME/sdh`. This folder should be created
|
|
manually prior to the docker commands below, or else Docker creates it with the
|
|
root user.
|
|
|
|
```bash
|
|
mkdir $HOME/sdh
|
|
```
|
|
|
|
To scaffold a blockchain `planet` in the `/apps` directory in the container, run
|
|
this command in a terminal window:
|
|
|
|
```bash
|
|
docker run -ti -v $HOME/sdh:/home/tendermint -v $PWD:/apps ignitehq/cli:0.25.2 scaffold chain planet
|
|
```
|
|
|
|
Be patient, this command takes a minute or two to run because it does everything
|
|
for you:
|
|
|
|
- Creates a container that runs from the `ignitehq/cli:0.25.2` image.
|
|
- Executes the IGNITE® CLI binary inside the image.
|
|
- `-v $HOME/sdh:/home/tendermint` maps the `$HOME/sdh` directory in your local
|
|
computer (the host machine) to the home directory `/home/tendermint` inside
|
|
the container.
|
|
- `-v $PWD:/apps` maps the current directory in the terminal window on the host
|
|
machine to the `/apps` directory in the container. You can optionally specify
|
|
an absolute path instead of `$PWD`.
|
|
|
|
Using `-w` and `-v` together provides file persistence on the host machine.
|
|
The application source code on the Docker container is mirrored to the file
|
|
system of the host machine.
|
|
|
|
**Note:** The directory name for the `-w` and `-v` flags can be a name other
|
|
than `/app`, but the same directory must be specified for both flags. If you
|
|
omit `-w` and `-v`, the changes are made in the container only and are lost
|
|
when that container is shut down.
|
|
|
|
## Starting a blockchain
|
|
|
|
To start the blockchain node in the Docker container you just created, run this
|
|
command:
|
|
|
|
```bash
|
|
docker run -ti -v $HOME/sdh:/home/tendermint -v $PWD:/apps -p 1317:1317 -p 26657:26657 ignitehq/cli:0.25.2 chain serve -p planet
|
|
```
|
|
|
|
This command does the following:
|
|
|
|
- `-v $HOME/sdh:/home/tendermint` maps the `$HOME/sdh` directory in your local
|
|
computer (the host machine) to the home directory `/home/tendermint` inside
|
|
the container.
|
|
- `-v $PWD:/apps` persists the scaffolded app in the container to the host
|
|
machine at current working directory.
|
|
- `serve -p planet` specifies to use the `planet` directory that contains the
|
|
source code of the blockchain.
|
|
- `-p 1317:1317` maps the API server port (cosmos-sdk) to the host machine to
|
|
forward port 1317 listening inside the container to port 1317 on the host
|
|
machine.
|
|
- `-p 26657:26657` maps RPC server port 26657 (tendermint) on the host machine
|
|
to port 26657 in Docker.
|
|
- After the blockchain is started, open `http://localhost:26657` to see the
|
|
Tendermint API.
|
|
- The `-v` flag specifies for the container to access the application's source
|
|
code from the host machine, so it can build and run it.
|
|
|
|
## Versioning
|
|
|
|
You can specify which version of IGNITE® CLI to install and run in your Docker
|
|
container.
|
|
|
|
### Latest version
|
|
|
|
- By default, `ignite/cli` resolves to `ignite/cli:latest`.
|
|
- The `latest` image tag is always the latest stable [IGNITE® CLI
|
|
release](https://github.com/ignite/cli/releases).
|
|
|
|
For example, if latest release is
|
|
[v0.25.2](https://github.com/ignite/cli/releases/tag/v0.25.2), the `latest` tag
|
|
points to the `0.25.2` tag.
|
|
|
|
### Specific version
|
|
|
|
You can specify to use a specific version of IGNITE® CLI. All available tags are
|
|
in the [ignite/cli
|
|
image](https://hub.docker.com/r/ignitehq/cli/tags?page=1&ordering=last_updated) on
|
|
Docker Hub.
|
|
|
|
For example:
|
|
|
|
- Use `ignitehq/cli:0.25.2` (without the `v` prefix) to use version `0.25.2`.
|
|
- Use `ignitehq/cli` to use the latest version.
|
|
- Use `ignitehq/cli:main` to use the `main` branch, so you can experiment with
|
|
the upcoming version.
|
|
|
|
To get the latest image, run `docker pull`.
|
|
|
|
```bash
|
|
docker pull ignitehq/cli:main
|
|
```
|