mirror of
https://gitlab.com/pulsechaincom/erigon-pulse.git
synced 2024-12-22 11:41:19 +00:00
a5144e0312
Providing an ENTRYPOINT in Dockerfiles is best practice, so I've added an ENTRYPOINT to Dockerfile and Dockerfile.debian, setting it to erigon, because it's the binary most people want to run. The setting can be overridden in the ` docker run` command to execute different binaries. Currently everybody has to override it anyway, because there's neither a CMD nor an ENTRYPOINT given. The Dockerfile.release already contains the ENTRYPOINT erigon. P.S.: This PR originated in #6862.
94 lines
4.1 KiB
YAML
94 lines
4.1 KiB
YAML
# Erigon by default is "all in one binary" solution, but it's possible start TxPool as separated processes.
|
|
# Same true about: JSON RPC layer (RPCDaemon), p2p layer (Sentry), history download layer (Downloader), consensus.
|
|
# Don't start services as separated processes unless you have clear reason for it: resource limiting, scale, replace by your own implementation, security.
|
|
# This file is an example: how to start Erigon's services as separated processes.
|
|
|
|
# Default: --datadir=/home/erigon/.local/share/erigon
|
|
# Default UID: 1000
|
|
# Default GID: 1000
|
|
# Ports: `9090` execution engine (private api), `9091` sentry, `9092` consensus engine, `9093` snapshot downloader, `9094` TxPool
|
|
# Ports: `8545` json rpc, `8551` consensus json rpc, `30303` eth p2p protocol, `42069` bittorrent protocol,
|
|
|
|
# Connections: erigon -> (sentries, downloader), rpcdaemon -> (erigon, txpool), txpool -> erigon
|
|
|
|
version: '2.2'
|
|
|
|
# Basic erigon's service
|
|
x-erigon-service: &default-erigon-service
|
|
image: thorax/erigon:${TAG:-latest}
|
|
pid: service:erigon # Use erigon's PID namespace. It's required to open Erigon's DB from another process (RPCDaemon local-mode)
|
|
volumes_from: [ erigon ]
|
|
restart: unless-stopped
|
|
mem_swappiness: 0
|
|
user: ${DOCKER_UID:-1000}:${DOCKER_GID:-1000}
|
|
|
|
services:
|
|
erigon:
|
|
image: thorax/erigon:${TAG:-latest}
|
|
build:
|
|
args:
|
|
UID: ${DOCKER_UID:-1000}
|
|
GID: ${DOCKER_GID:-1000}
|
|
context: .
|
|
command: |
|
|
${ERIGON_FLAGS-} --private.api.addr=0.0.0.0:9090
|
|
--sentry.api.addr=sentry:9091 --downloader.api.addr=downloader:9093 --txpool.disable
|
|
--metrics --metrics.addr=0.0.0.0 --metrics.port=6060 --pprof --pprof.addr=0.0.0.0 --pprof.port=6061
|
|
--authrpc.jwtsecret=/home/erigon/.local/share/erigon/jwt.hex --datadir=/home/erigon/.local/share/erigon
|
|
ports: [ "8551:8551" ]
|
|
volumes:
|
|
# It's ok to mount sub-dirs of "datadir" to different drives
|
|
- ${XDG_DATA_HOME:-~/.local/share}/erigon:/home/erigon/.local/share/erigon
|
|
restart: unless-stopped
|
|
mem_swappiness: 0
|
|
|
|
sentry:
|
|
<<: *default-erigon-service
|
|
entrypoint: sentry
|
|
command: ${SENTRY_FLAGS-} --sentry.api.addr=0.0.0.0:9091 --datadir=/home/erigon/.local/share/erigon
|
|
ports: [ "30303:30303/tcp", "30303:30303/udp" ]
|
|
|
|
downloader:
|
|
<<: *default-erigon-service
|
|
entrypoint: downloader
|
|
command: ${DOWNLOADER_FLAGS-} --downloader.api.addr=0.0.0.0:9093 --datadir=/home/erigon/.local/share/erigon
|
|
ports: [ "42069:42069/tcp", "42069:42069/udp" ]
|
|
|
|
txpool:
|
|
<<: *default-erigon-service
|
|
entrypoint: txpool
|
|
command: ${TXPOOL_FLAGS-} --private.api.addr=erigon:9090 --txpool.api.addr=0.0.0.0:9094 --sentry.api.addr=sentry:9091 --datadir=/home/erigon/.local/share/erigon
|
|
|
|
rpcdaemon:
|
|
<<: *default-erigon-service
|
|
entrypoint: rpcdaemon
|
|
command: |
|
|
${RPCDAEMON_FLAGS-} --http.addr=0.0.0.0 --http.vhosts=* --http.corsdomain=* --ws
|
|
--private.api.addr=erigon:9090 --txpool.api.addr=txpool:9094 --datadir=/home/erigon/.local/share/erigon
|
|
ports: [ "8545:8545" ]
|
|
|
|
|
|
|
|
|
|
prometheus:
|
|
image: prom/prometheus:v2.42.0
|
|
user: ${DOCKER_UID:-1000}:${DOCKER_GID:-1000} # Uses erigon user from Dockerfile
|
|
command: --log.level=warn --config.file=/etc/prometheus/prometheus.yml --storage.tsdb.path=/prometheus --storage.tsdb.retention.time=150d --web.console.libraries=/usr/share/prometheus/console_libraries --web.console.templates=/usr/share/prometheus/consoles
|
|
ports: [ "9090:9090" ]
|
|
volumes:
|
|
- ${ERIGON_PROMETHEUS_CONFIG:-./cmd/prometheus/prometheus.yml}:/etc/prometheus/prometheus.yml
|
|
- ${XDG_DATA_HOME:-~/.local/share}/erigon-prometheus:/prometheus
|
|
restart: unless-stopped
|
|
|
|
grafana:
|
|
image: grafana/grafana:9.3.6
|
|
user: "472:0" # required for grafana version >= 7.3
|
|
ports: [ "3000:3000" ]
|
|
volumes:
|
|
- ${ERIGON_GRAFANA_CONFIG:-./cmd/prometheus/grafana.ini}:/etc/grafana/grafana.ini
|
|
- ./cmd/prometheus/datasources:/etc/grafana/provisioning/datasources
|
|
- ./cmd/prometheus/dashboards:/etc/grafana/provisioning/dashboards
|
|
- ${XDG_DATA_HOME:-~/.local/share}/erigon-grafana:/var/lib/grafana
|
|
restart: unless-stopped
|
|
|