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/README.md

93 lines
3.8 KiB

# Docker-compose configuration
Runs Blockscout locally in Docker containers with [docker-compose](https://github.com/docker/compose).
## Prerequisites
2 years ago
- Docker v20.10+
- Docker-compose 2.x.x+
- Running Ethereum JSON RPC client
## Building Docker containers from source
2 years ago
**Note**: in all below examples, you can use `docker compose` instead of `docker-compose`, if compose v2 plugin is installed in Docker.
```bash
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.
2 years ago
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 5 containers for microservices (written in Rust):
- [Stats](https://github.com/blockscout/blockscout-rs/tree/main/stats) service with a separate Postgres 14 DB.
- [Sol2UML visualizer](https://github.com/blockscout/blockscout-rs/tree/main/visualizer) service.
- [Sig-provider](https://github.com/blockscout/blockscout-rs/tree/main/sig-provider) service.
- [User-ops-indexer](https://github.com/blockscout/blockscout-rs/tree/main/user-ops-indexer) service.
**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
2 years ago
The repo contains built-in configs for different JSON RPC clients without need to build the image.
2 years ago
| __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`
- for user-ops-indexer in `./envs/common-user-ops-indexer.env`
Descriptions of the ENVs are available
- for [backend](https://docs.blockscout.com/for-developers/information-and-settings/env-variables)
- for [frontend](https://github.com/blockscout/frontend/blob/main/docs/ENVS.md).
## Running Docker containers via Makefile
Prerequisites are the same, as for docker-compose setup.
Start all containers:
```bash
cd ./docker
make start
```
Stop all containers:
```bash
cd ./docker
make stop
```
***Note***: Makefile uses the same .env files since it is running docker-compose services inside.