Skip to content

Docker Deployment

Compose files

The chain repository includes pre-built Docker Compose configurations under compose/:

File Purpose
docker-compose.yml Single-node dev chain
docker-compose.testnet.yml 4-node local testnet with consensus
docker-compose.bootstrap.yml Bootstrap configuration for initial network setup
docker-compose.monitoring.yml Prometheus + Grafana monitoring stack

Single-node dev chain

# Start
docker compose -f compose/docker-compose.yml up -d

# Or use the CLI shortcut
chainctl devnet up

# View logs
docker compose -f compose/docker-compose.yml logs -f

# Stop
docker compose -f compose/docker-compose.yml down

The dev chain exposes:

  • RPC: http://127.0.0.1:26657
  • Admission: http://127.0.0.1:8081
  • Metrics: http://127.0.0.1:9100

4-node local testnet

docker compose -f compose/docker-compose.testnet.yml up -d

This starts four validator nodes, each with its own chaind and admissiond instance. Nodes are pre-configured with genesis keys and peer addresses.

Monitoring

Add Prometheus and Grafana to an existing deployment:

docker compose -f compose/docker-compose.yml -f compose/docker-compose.monitoring.yml up -d

Systemd units

For bare-metal deployments, create systemd service files for chaind and admissiond:

# /etc/systemd/system/chaind.service
[Unit]
Description=Wasichain Chain Node
After=network.target

[Service]
Type=simple
ExecStart=/usr/local/bin/chaind --mode consensus --genesis /etc/chain/genesis.toml --config /etc/chain/node.toml
Restart=on-failure
RestartSec=5
User=chain

[Install]
WantedBy=multi-user.target
# /etc/systemd/system/admissiond.service
[Unit]
Description=Wasichain Admission Service
After=network.target chaind.service

[Service]
Type=simple
ExecStart=/usr/local/bin/admissiond --config /etc/chain/admission.toml
Restart=on-failure
RestartSec=5
User=chain

[Install]
WantedBy=multi-user.target
sudo systemctl enable --now chaind admissiond