Add a stack to run an Ethereum node #1

Merged
nabarun merged 6 commits from pm-add-eth-stack into main 2024-09-11 04:18:18 +00:00
3 changed files with 84 additions and 6 deletions
Showing only changes of commit 50f77a1b85 - Show all commits

View File

@ -2,21 +2,21 @@ services:
eth-geth: eth-geth:
restart: on-failure restart: on-failure
hostname: eth-geth hostname: eth-geth
image: ethereum/client-go:alltools-v1.14.8
env_file:
- ../config/eth/params.env
environment: environment:
CERC_SCRIPT_DEBUG: ${CERC_SCRIPT_DEBUG} CERC_SCRIPT_DEBUG: ${CERC_SCRIPT_DEBUG}
CERC_NETWORK: ${CERC_NETWORK:-sepolia} CERC_NETWORK: ${CERC_NETWORK:-sepolia}
CERC_ALLOW_UNPROTECTED_TXS: ${CERC_ALLOW_UNPROTECTED_TXS:-false} CERC_ALLOW_UNPROTECTED_TXS: ${CERC_ALLOW_UNPROTECTED_TXS:-false}
CERC_ETH_DATADIR: ${CERC_ETH_DATADIR:-/root/ethdata} CERC_ETH_DATADIR: ${CERC_ETH_DATADIR:-/root/ethdata}
CERC_GETH_VERBOSITY: ${CERC_GETH_VERBOSITY:-3} CERC_GETH_VERBOSITY: ${CERC_GETH_VERBOSITY:-3}
env_file:
- ../config/eth/params.env
image: ethereum/client-go:alltools-v1.14.8
entrypoint: ["sh", "-c"] entrypoint: ["sh", "-c"]
command: | command: |
"/scripts/run-el.sh" "/root/scripts/run-el.sh"
volumes: volumes:
- eth_geth_data:/root/ethdata - eth_geth_data:/root/.ethereum
- ../config/eth/run-el.sh:/scripts/run-el.sh - ../config/eth/run-el.sh:/root/scripts/run-el.sh
healthcheck: healthcheck:
test: ["CMD", "nc", "-v", "localhost", "8545"] test: ["CMD", "nc", "-v", "localhost", "8545"]
interval: 30s interval: 30s
@ -28,5 +28,36 @@ services:
- "8546" - "8546"
- "6060" - "6060"
eth-lighthouse:
restart: on-failure
hostname: eth-lighthouse
image: sigp/lighthouse:v5.3.0
depends_on:
eth-geth:
condition: service_healthy
env_file:
- ../config/eth/params.env
environment:
CERC_SCRIPT_DEBUG: ${CERC_SCRIPT_DEBUG}
ETH_ENDPOINT: "http://eth-geth:8545"
EXECUTION_ENDPOINT: "http://eth-geth:8551"
CERC_NETWORK: ${CERC_NETWORK:-sepolia}
CERC_LIGHTHOUSE_DATADIR: ${CERC_LIGHTHOUSE_DATADIR:-/root/.lighthouse}
CERC_CHECKPOINT_SYNC_URL: ${CERC_CHECKPOINT_SYNC_URL}
CERC_DEBUG_LEVEL: ${CERC_DEBUG_LEVEL:-info}
command: bash /root/scripts/run-cl.sh
volumes:
- eth_lighthouse_data:/root/.lighthouse
- ../config/eth/run-cl.sh:/root/scripts/run-cl.sh
healthcheck:
test: ["CMD", "wget", "--tries=1", "--connect-timeout=1", "--quiet", "-O", "-", "http://localhost:8001/eth/v2/beacon/blocks/head"]
interval: 30s
timeout: 10s
retries: 10
start_period: 30s
ports:
- "8001"
volumes: volumes:
eth_geth_data: eth_geth_data:
eth_lighthouse_data:

View File

@ -0,0 +1,45 @@
#!/bin/bash
set -e
set -o pipefail
if [ -n "$CERC_SCRIPT_DEBUG" ]; then
set -x
fi
echo "Using the following env:"
echo "CERC_NETWORK: ${CERC_NETWORK}"
echo "CERC_LIGHTHOUSE_DATADIR: ${CERC_LIGHTHOUSE_DATADIR}"
echo "CERC_CHECKPOINT_SYNC_URL: ${CERC_CHECKPOINT_SYNC_URL}"
echo "CERC_DEBUG_LEVEL: ${CERC_DEBUG_LEVEL}"
echo "ETH_ENDPOINT: ${ETH_ENDPOINT}"
echo "EXECUTION_ENDPOINT: ${EXECUTION_ENDPOINT}"
# See https://linuxconfig.org/how-to-propagate-a-signal-to-child-processes-from-a-bash-script
cleanup() {
echo "Signal received, cleaning up..."
kill $(jobs -p)
wait
echo "Done"
}
trap 'cleanup' SIGINT SIGTERM
jwtsecret_file_path=/opt/jwtsecret
echo -n "$JWT" > $jwtsecret_file_path
http_port=8001
lighthouse bn \
--network $CERC_NETWORK \
--datadir $CERC_LIGHTHOUSE_DATADIR/$CERC_NETWORK \
--execution-endpoint $EXECUTION_ENDPOINT \
--execution-jwt $jwtsecret_file_path \
--checkpoint-sync-url $CERC_CHECKPOINT_SYNC_URL \
--disable-deposit-contract-sync \
--debug-level $CERC_DEBUG_LEVEL \
--http \
--http-address 0.0.0.0 \
--http-port $http_port \
2>&1 | tee /var/log/lighthouse_bn.log &
beacon_pid=$!
wait $beacon_pid

View File

@ -1,5 +1,6 @@
#!/bin/sh #!/bin/sh
set -e
if [ -n "$CERC_SCRIPT_DEBUG" ]; then if [ -n "$CERC_SCRIPT_DEBUG" ]; then
set -x set -x
fi fi
@ -8,6 +9,7 @@ echo "Using the following env:"
echo "CERC_NETWORK: ${CERC_NETWORK}" echo "CERC_NETWORK: ${CERC_NETWORK}"
echo "CERC_ALLOW_UNPROTECTED_TXS: ${CERC_ALLOW_UNPROTECTED_TXS}" echo "CERC_ALLOW_UNPROTECTED_TXS: ${CERC_ALLOW_UNPROTECTED_TXS}"
echo "CERC_ETH_DATADIR: ${CERC_ETH_DATADIR}" echo "CERC_ETH_DATADIR: ${CERC_ETH_DATADIR}"
echo "CERC_GETH_VERBOSITY: ${CERC_GETH_VERBOSITY}"
# See https://linuxconfig.org/how-to-propagate-a-signal-to-child-processes-from-a-bash-script # See https://linuxconfig.org/how-to-propagate-a-signal-to-child-processes-from-a-bash-script
cleanup() { cleanup() {