Skip to Content

Configuration

This page explains how the local dev environment is wired together using Docker Compose and the Devcontainer.

Profiles

Only the devcontainer service is behind a profile:

  • dev — runs the Devcontainer service for an interactive shell

Common commands:

docker compose --profile dev up -d docker compose up -d

Services and roles

Core services (from docker-compose.yml):

  • init-workspace: runs pnpm install once and writes /state/.akkadia-initialized
  • gnoland: local Gno chain (RPC + P2P)
  • gnoweb: web UI for chain (--remote gnoland:26657)
  • init-txs: runs migrations, seed generation, and Gno init scripts
  • server-world: world/multiplayer API (3003)
  • server-communicate: chat/rooms (3030)
  • server-bridge: bridge service (3020)
  • server-internal-api: internal API (3010)
  • server-internal-worker: internal background workers
  • client-game: Svelte client (36036)
  • mariadb: database (3306)
  • redis: cache/queue (6379)

All app services run inside the akkadia-devcontainer image and mount the repo at /app so they can run pnpm directly.

Startup flow

The stack boots in this order:

  1. mariadb and redis
  2. init-workspace (runs pnpm install, writes /state/.akkadia-initialized)
  3. gnoland (starts chain and exposes RPC)
  4. init-txs (migrate DB, seed data, init Gno txs)
  5. App services (server-*, client-game)
  6. gnoweb depends on gnoland healthcheck

Health checks are used to gate dependent services, e.g. server-world waits for server-internal-api and gnoland.

Common workflows

Start everything:

docker compose up -d

Start only gnoland (ignore dependencies):

docker compose up -d --no-deps gnoland

Tail logs:

docker compose logs -f gnoland docker compose logs -f server-world

Rebuild devcontainer image:

docker compose --profile dev up -d --build devcontainer

Local data and config

  • gnoland reads balances from ./gno/balances.txt (mounted to /overlay)
  • UID/GID defaults are taken from .env (UID=501, GID=20 on macOS)
Last updated on
Docsv1.0.10