README.md
June 6, 2026 ยท View on GitHub
For Users
Docker images are available on our Github registry:
docker pull ghcr.io/pragma-org/amaru:latest
New images are published on every change to the main branch; with the tag
:latest. Those pertaining to releases are tagged accordingly.
Tip
Images are multi-arch (amd64 / arm64) by default. So they should work on any reasonable 64-bit system.
For Developers/Maintainers
The following instructions contains detail on how to build a Docker image by yourself and/or, how to setup a small development cluster of Amaru and Haskell nodes. The described setup is mostly meant for development and toying around.
TL;DR
cd docker/cluster
echo AMARU_NETWORK=preprod > .env
docker compose up
Building a development optimized image
Dockerfile.amaru helps create a docker image of Amaru. Do not use in production.
The goal of this image is to help with the development of Amaru. It is not optimized to run an Amaru node. It is optimized to build an Amaru node from source. It takes advantage of the docker cache to rebuild the image as fast as possible when code changes.
The image is layered that way:
- install rust tooling
- setup the rust toolchain
- fetch amaru's dependencies
- compile amaru's dependencies
- build amaru
Once the docker build cache is setup, changing code in amaru should only trigger the step 5, taking advantage of the cache for all the previous steps.
To build the image, from the project's root directory:
docker build . -f docker/Dockerfile.amaru -t dev_amaru
Starting a development cluster
The cluster/docker-compose.yml file defines a development cluster. It is composed of:
- one cardano node;
- one amaru node following this cardano node;
- a second amaru node following the first.
To start the cluster with the preprod network, setup a .env file specifying preprod as
the network and start the cluster:
cd docker/cluster
echo AMARU_NETWORK=preprod >.env
docker compose up --build
If you change the code and want to restart the amaru node to take this new code into account:
docker compose up -d --build amaru
Limitations
At this time, changing the network once you've started the cluster could be problematic.
The amaru (or cardano) node relies on a docker volume and stores its data in a single
directory. So starting the amaru node on preview if you already started it on preprod
before would create some problems and you would have to, either, drop the volume first
or hack with docker-compose.yml to change volume.
If this becomes a real problem, we can rely on the docker compose PROJECT_NAME
environment variable to ensure each network get its own docker volume, for instance.