Blockchain explorer for Ethereum based network and a tool for inspecting and analyzing EVM based blockchains.
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
blockscout/docker-compose
Nikita Pozdniakov d7be418ec3
Fix after review
11 months ago
..
envs Fix after review 11 months ago
proxy Fix microservices.yml docker-compose stats cors issue 12 months ago
services Open ports of services 12 months ago
README.md Refine docker-compose config structure 12 months ago
docker-compose.yml Refine docker-compose config structure 12 months ago
erigon.yml Refine docker-compose config structure 12 months ago
external-backend.yml Refine docker-compose config structure 12 months ago
external-db.yml Refine docker-compose config structure 12 months ago
external-frontend.yml Refine docker-compose config structure 12 months ago
ganache.yml Refine docker-compose config structure 12 months ago
geth-clique-consensus.yml Refine docker-compose config structure 12 months ago
geth.yml Refine docker-compose config structure 12 months ago
hardhat-network.yml Refine docker-compose config structure 12 months ago
microservices.yml Improve microservices.yml docker-compose 12 months ago

README.md

Docker-compose configuration

Runs Blockscout locally in Docker containers with docker-compose.

Prerequisites

  • Docker v20.10+
  • Docker-compose 2.x.x+
  • Running Ethereum JSON RPC client

Building Docker containers from source

cd ./docker-compose
docker-compose up --build

Note: if you don't need to make backend customizations, you can run docker-compose up in order to launch from pre-build backend Docker image. This will be much faster.

This command uses docker-compose.yml by-default, which builds the backend of the explorer into the Docker image and runs 9 Docker containers:

  • Postgres 14.x database, which will be available at port 7432 on the host machine.
  • Redis database of the latest version.
  • Blockscout backend with api at /api path.
  • Nginx proxy to bind backend, frontend and microservices.
  • Blockscout explorer at http://localhost.

and 4 containers for microservices (written in Rust):

Note for Linux users: Linux users need to run the local node on http://0.0.0.0/ rather than http://127.0.0.1/

Configs for different Ethereum clients

The repo contains built-in configs for different JSON RPC clients without need to build the image.

Note: in all below examples, you can use docker compose instead of docker-compose, if compose v2 plugin is installed in Docker.

JSON RPC Client Docker compose launch command
Erigon docker-compose -f erigon.yml up -d
Geth (suitable for Reth as well) docker-compose -f geth.yml up -d
Geth Clique docker-compose -f geth-clique-consensus.yml up -d
Nethermind, OpenEthereum docker-compose -f nethermind up -d
Ganache docker-compose -f ganache.yml up -d
HardHat network docker-compose -f hardhat-network.yml up -d
  • Running only explorer without DB: docker-compose -f external-db.yml up -d. In this case, no db container is created. And it assumes that the DB credentials are provided through DATABASE_URL environment variable on the backend container.
  • Running explorer with external backend: docker-compose -f external-backend.yml up -d
  • Running explorer with external frontend: docker-compose -f external-frontend.yml up -d
  • Running all microservices: docker-compose -f microservices.yml up -d

All of the configs assume the Ethereum JSON RPC is running at http://localhost:8545.

In order to stop launched containers, run docker-compose -d -f config_file.yml down, replacing config_file.yml with the file name of the config which was previously launched.

You can adjust BlockScout environment variables:

  • for backend in ./envs/common-blockscout.env
  • for frontend in ./envs/common-frontend.env
  • for stats service in ./envs/common-stats.env
  • for visualizer in ./envs/common-visualizer.env

Descriptions of the ENVs are available

Running Docker containers via Makefile

Prerequisites are the same, as for docker-compose setup.

Start all containers:

cd ./docker
make start

Stop all containers:

cd ./docker
make stop

Note: Makefile uses the same .env files since it is running docker-compose services inside.