Skip to main content

Working with Docker

There are multiple ways to use Guru with Docker. If you want to run Guru inside a Docker setup and possibly connect the Docker container to other containerized compatible blockchain binaries, check out the guide on building a Docker image containing the Guru binary. If you instead want to generate a binary for use outside of Docker, but want to ensure the correct dependencies are used by building the binary inside a Docker container, then go ahead to the section on building the Guru binary with Docker.

Prerequisites

General Setup

In order to build Guru binaries with Docker, it is necessary to

  • clone the Guru repository to your local machine (e.g. git clone git@github.com:gurufinglobal/guru.git)
  • checkout the commit, branch, or release tag you want to build (e.g. git checkout v1.0.8)

Building A Docker Image Containing The Binary

To build a Docker image, that contains the Guru binary, step into the cloned repository and run the following command in a terminal session:

make build-docker

This will create an image with the name gurufin/guru and the version tag latest. Now it is possible to run the gurud binary in the container, e.g. evaluating its version:

docker run -it --rm gurufin/guru:latest gurud version

Building The Binary With Docker

It is possible to build the gurud binary deterministically using Docker. The container system that Docker provides offers the ability to create an instance of the Guru binary in an isolated environment.

Building the Image

Run the following command to launch a build for all supported architectures (currently linux/amd64):

make distclean build-reproducible

The build system generates both the binaries and deterministic build report in the artifacts directory. The artifacts/build_report file contains the list of the build artifacts and their respective checksums, and can be used to verify build sanity. An example of its contents follows:

App: gurud
Version: 11.0.2
Commit: 8eeeac7ae42a5b2695fea7f56868f3c6e9bc2378
Files:
6b5939adfd9a8ce964d78fcaab16091a gurud-11.0.2-linux-amd64
ac503925c535ddb8ee0fbebbb96d0eb9 gurud-11.0.2.tar.gz
Checksums-Sha256:
0857d59c285a87b7d354aa6d566db90c56663d938a88d41d35415da490708aea gurud-11.0.2-linux-amd64
5005814fc34abc02d7e30dcfbe67e363c1b593efb774e0c97ebb7ec713baf306 gurud-11.0.2.tar.gz

Builder Image

The Tendermint builder Docker image provides a deterministic build environment that is used to build Cosmos SDK applications. It provides a way to be reasonably sure that the executables are really built from the git source. It also makes sure that the same, tested dependencies are used and statically built into the executable.


Now that you have built the Guru binary, either for local use or in a Docker container, you'll find information to run a node instance in the following section on setting up a local network.