mukan-ignite/docs/versioned_docs/version-v29/02-guide/06-docker.md
Mukan Erkin Törük 26b204bd04
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
feat: fork Ignite CLI v29 as Mukan Ignite — remove cosmos-sdk restrictions
2026-05-11 03:31:37 +03:00

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
```