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 -dServices and roles
Core services (from docker-compose.yml):
init-workspace: runspnpm installonce and writes/state/.akkadia-initializedgnoland: local Gno chain (RPC + P2P)gnoweb: web UI for chain (--remote gnoland:26657)init-txs: runs migrations, seed generation, and Gno init scriptsserver-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 workersclient-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:
mariadbandredisinit-workspace(runspnpm install, writes/state/.akkadia-initialized)gnoland(starts chain and exposes RPC)init-txs(migrate DB, seed data, init Gno txs)- App services (
server-*,client-game) gnowebdepends ongnolandhealthcheck
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 -dStart only gnoland (ignore dependencies):
docker compose up -d --no-deps gnolandTail logs:
docker compose logs -f gnoland
docker compose logs -f server-worldRebuild devcontainer image:
docker compose --profile dev up -d --build devcontainerLocal data and config
gnolandreads balances from./gno/balances.txt(mounted to/overlay)- UID/GID defaults are taken from
.env(UID=501,GID=20on macOS)
Last updated on