Runs Blockscout locally in Docker containers with docker-compose.
- Docker v20.10+
- Docker-compose 2.x.x+
- Running Ethereum JSON RPC client
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:https://localhost.
and 4 containers for microservices (written in Rust):
- Stats service with a separate Postgres 14 DB.
- Sol2UML visualizer service.
- Sig-provider service.
Note for Linux users: Linux users need to run the local node on http:https://0.0.0.0/ rather than http:https://127.0.0.1/
The repo contains built-in configs for different JSON RPC clients without need to build the image.
- Erigon:
docker-compose -f docker-compose-no-build-erigon.yml up -d
- Geth (suitable for Reth as well):
docker-compose -f docker-compose-no-build-geth.yml up -d
- Geth Clique:
docker-compose -f docker-compose-no-build-geth-clique-consensus.yml up -d
- Nethermind, OpenEthereum:
docker-compose -f docker-compose-no-build-nethermind up -d
- Ganache:
docker-compose -f docker-compose-no-build-ganache.yml up -d
- HardHat network:
docker-compose -f docker-compose-no-build-hardhat-network.yml up -d
- Running only explorer without DB:
docker-compose -f docker-compose-no-build-no-db-container.yml up -d
. In this case, one container is created - for the explorer itself. And it assumes that the DB credentials are provided throughDATABASE_URL
environment variable. - Running explorer with external backend:
docker-compose -f docker-compose-no-build-external-backend.yml up -d
- Running explorer with external frontend:
docker-compose -f docker-compose-no-build-external-frontend.yml up -d
All of the configs assume the Ethereum JSON RPC is running at http:https://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
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.