Create a new Network with Docker Compose
This guide describes how to start a new instance of Trubudget using docker compose.
We distinguish between two types of deployments:
- The local deployment type which will create images from the code you have on your local machine and includes any changes you might have done
- The alpha deployment type that will deploy Docker images out of the Docker Hub
For the alpha deployment, you can use tags to specify the version you want to use
The deployments are abstracted through shell scripts. We expect you to have a UNIX-like operating system which can execute shell scripts, e.g. Ubuntu. If not, take a look at the scripts and port them according to your operating system.
Table of Contents
Prerequisites
Docker & Docker Compose
The whole deployment is based on Docker and Docker Compose, therefore you need to install Docker (version 20.10.7 or higher) and Docker Compose (version 1.29.2 or higher).
Ports and IP Addresses for TruBudget
Make sure that the following ports are not blocked by other processes: 3000
, 8080
, 8090
, 9000
, 8081
, 7447
, 7448
.
Also make sure that IPv4 subnet mask 172.21.0.0/24
is free to use on your computer.
If the subnet mask or some ports are already used by other processes or programs, you can easily change the port in
the .env
file that is located in /scripts/operations/
.
Verify version of TruBudget
Start with checking out the repository:
git clone https://github.com/openkfw/TruBudget
cd TruBudget
This will create a local copy of the latest source code in a folder called TruBudget
(= your local checkout).
If you work with an existing checkout, make sure you have the latest changes:
git checkout main
git pull
Clean installation
If you have previously started a TruBudget instance and want to start a new Blockchain network without previously stored data, remove the Docker volumes with:
sudo rm -r /alphaVolume
sudo rm -r /beta1Volume
sudo rm -r /minioVolume
sudo rm -r /emaildbVolume
If this is either your first time starting TruBudget or you want to resume where you left off, skip this step.
Create a new Blockchain network
Each Blockchain container comes with its own volume that persists the data of the Blockchain.
To modify the host path, meaning the path where the data will be persisted on your local machine (docker volume), you
can change it in the docker compose file scripts/operation/docker-compose.yml
.
The next step is to set all required environment properties, otherwise Docker will not receive the required parameters
to start the deployment.
If you want to start with the standard configuration we recommend copying the .env.example
file and rename it
to .env
in the TruBudget
base folder:
cd scripts/operation/
cp .env.example .env
The .env
in scripts/operation/ can be edited directly to fit your needs.
For detailed explanations of the environment variables, see the Environment Variables
To start the TruBudget in an easy way, use the bash script start-trubudget.sh
.
If you want to start a setup with one blockchain, frontend, API and provisioning (for test data), run:
cd scripts/operation/
bash start-trubudget.sh --slim
If you want to add an additional blockchain node, email-notification-service, excel-export-service or storage-service, please take a look at the README.md of operation setup
The frontend should be accessible via port 3000 on the server that it is running on: http://localhost:3000/
The API Swagger documentation should be accessible via port 8080 on the server that it is running on: http://localhost:8080/api/documentation/static/index.html
Create a new Blockchain network with two organization
To connect two blockchains, you need to define exactly one alpha node and one or more beta nodes. The define a beta node, you must set the correct Environmental variables in a blockchain node in order to
- start a beta node with correct environmental variables
- send access requests to the alpha node
To understand how to set the environment variables correctly, read How to connect to a alpha node .
If you want to know what exactly happens when blockchain nodes are connecting, read the description of the Lifecycle.
Example
The docker compose file in scripts/operation/
comes with one additional blockchain node (beta-node) that tries to
connect to the alpha node after starting.
Each Blockchain container comes with its own volume that persists the data of the Blockchain.
To start TruBudget with two organizations (alpha and beta), run:
bash start-trubudget.sh --slim --add-organization
This will create the blockchain, API and frontend for each of both organizations.
You can access the frontend of the beta-node with http://localhost:3005/ and the for the alpha-node
with http://localhost:3000/. This is defined in the docker-compose.yml
file.
The beta-node must be approved by the alpha-node. This can be done with the root user in the alpha frontend at the
page http://localhost:3000/nodes.
The name of both organization and other configurations are defined in the .env
file (in the
directory scripts/operation/
).
If you need more beta-nodes, you have to change the docker-compose.yml
file and start-trubudget.sh
in the
directory scripts/operation/
by yourself.