Skip to content

Docker Deployment

Install the wasichain CLI separately as a host binary. The Docker distribution here is for the node services: chaind, admissiond, and gatewayd.

Published images:

  • ghcr.io/wasichain/wasichain-chaind:<tag>
  • ghcr.io/wasichain/wasichain-admissiond:<tag>
  • ghcr.io/wasichain/wasichain-gatewayd:<tag>

Compose files

The chain repository includes Docker Compose configurations under compose/:

File Purpose
docker-compose.yml Single-node dev chain
docker-compose.testnet.yml 4-node local testnet
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 --build

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

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

Expose these ports in the deployment:

  • Gateway: port 8080
  • Chain RPC: port 26657
  • Admission: port 8081
  • Metrics: port 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. Put gatewayd in front of these internal services if you want a single public API surface.

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, admissiond, and gatewayd.

# /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
# /etc/systemd/system/gatewayd.service
[Unit]
Description=Wasichain API Gateway
After=network.target chaind.service admissiond.service

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

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