b297b79f07
Also uses `uname -m` to decide what platform to download the binary for. |
||
---|---|---|
.. | ||
coins | ||
coordinator | ||
Dockerfile.parts | ||
kubernetes | ||
message-queue | ||
processor | ||
runtime | ||
serai | ||
docker-compose.yml | ||
dockerfiles.sh | ||
README.md |
Deploy
Run with Docker Compose
Running the Serai infrastructure is easy with Docker.
We utilize compose profiles to easily orchestrate various pieces of the infrastructure.
Example: docker compose --profile cluster-coins-sm up
All commands are assumed to be ran from /deploy
, not the root folder.
Profiles:
-
bitcoin
- Bitcoin node -
monero
- Monero node -
ethereum
- Ethereum node -
coins
- Nodes for all external networks (BTC, ETH, XMR) -
message-queue
- The message queue service. -
processor
- Serai processor for one external network. -
coordinator
- Serai coordinator for the entire Serai stack. -
serai
- Serai node -
cluster-sm
- "Alice", "Bob", "Charlie", and "Dave" Serai nodes, all as validators (enough to achieve BFT with one faulty node) -
cluster-lg
-cluster-sm
with non-validators "Eve" and "Ferdie"
You can supply one or more profiles to the docker compose command to orchestrate the desired components.
Example: docker compose --profile coins --profile serai up
Orchestration Approach
Builds
The Serai infrastructure is locally compiled. This may take several minutes.
Images for external networks download binaries, before verifying their checksums and signatures.
Stage 1 -- Builder
- Configure environment.
- Get the binary.
- Verify binary using GPG.
- Decompress binary to prepare image.
Stage 2 -- Image
- Copy needed files from builder.
- Move executables to bin folder.
- Copy scripts folder.
- Expose necessary ports.
- Map necessary volumes.
Entrypoint
The Serai node and external networks' nodes are each started from an entrypoint
script inside the /scripts
folder.
To update the scripts on the image you must rebuild the updated images using the
--build
flag after up
in docker compose
.
Example: docker compose --profile bitcoin up --build