From 106cbe33ca45d768e0f76427f6d1160fca21d598 Mon Sep 17 00:00:00 2001 From: Thomas E Lackey Date: Wed, 11 Jan 2023 12:33:06 -0600 Subject: [PATCH] Add remote debugging support to fixturenet-geth. --- .../compose/docker-compose-fixturenet-eth.yml | 10 +++++++--- .../cerc-fixturenet-eth-geth/Dockerfile | 4 ++++ .../cerc-fixturenet-eth-geth/run-el.sh | 15 ++++++++++----- 3 files changed, 21 insertions(+), 8 deletions(-) diff --git a/app/data/compose/docker-compose-fixturenet-eth.yml b/app/data/compose/docker-compose-fixturenet-eth.yml index df6ae30a..3986ae43 100644 --- a/app/data/compose/docker-compose-fixturenet-eth.yml +++ b/app/data/compose/docker-compose-fixturenet-eth.yml @@ -14,6 +14,12 @@ services: fixturenet-eth-geth-1: hostname: fixturenet-eth-geth-1 + cap_add: + - SYS_PTRACE + environment: + CERC_RUN_STATEDIFF: "detect" + CERC_STATEDIFF_DB_NODE_ID: 1 + REMOTE_DEBUG: "true" env_file: - ../config/fixturenet-eth/fixturenet-eth.env image: cerc/fixturenet-eth-geth:local @@ -27,12 +33,10 @@ services: - fixturenet-eth-bootnode-geth ports: - "8545" + - "40000" fixturenet-eth-geth-2: hostname: fixturenet-eth-geth-2 - environment: - CERC_RUN_STATEDIFF: "detect" - CERC_STATEDIFF_DB_NODE_ID: 2 healthcheck: test: ["CMD", "nc", "-v", "localhost", "8545"] interval: 30s diff --git a/app/data/container-build/cerc-fixturenet-eth-geth/Dockerfile b/app/data/container-build/cerc-fixturenet-eth-geth/Dockerfile index cefe1bef..4e6df84a 100644 --- a/app/data/container-build/cerc-fixturenet-eth-geth/Dockerfile +++ b/app/data/container-build/cerc-fixturenet-eth-geth/Dockerfile @@ -1,8 +1,12 @@ FROM skylenet/ethereum-genesis-generator@sha256:210353ce7c898686bc5092f16c61220a76d357f51eff9c451e9ad1b9ad03d4d3 AS ethgen +FROM golang:1.18-alpine as delve +RUN go install github.com/go-delve/delve/cmd/dlv@latest + FROM cerc/go-ethereum:local RUN apk add --no-cache python3 python3-dev py3-pip curl wget jq build-base gettext libintl openssl bash bind-tools postgresql-client +COPY --from=delve /go/bin/dlv / COPY --from=ethgen /usr/local/bin/eth2-testnet-genesis /usr/local/bin/eth2-testnet-genesis COPY --from=ethgen /usr/local/bin/eth2-val-tools /usr/local/bin/eth2-val-tools COPY --from=ethgen /apps /apps diff --git a/app/data/container-build/cerc-fixturenet-eth-geth/run-el.sh b/app/data/container-build/cerc-fixturenet-eth-geth/run-el.sh index 34e74182..4fcda1fe 100755 --- a/app/data/container-build/cerc-fixturenet-eth-geth/run-el.sh +++ b/app/data/container-build/cerc-fixturenet-eth-geth/run-el.sh @@ -9,13 +9,18 @@ cd /opt/testnet/build/el python3 -m http.server 9898 & cd $HOME_DIR -if [ "true" == "$RUN_BOOTNODE" ]; then - geth \ +START_CMD="geth" +if [ "true" == "$REMOTE_DEBUG" ] && [ -x "/dlv" ]; then + START_CMD="/dlv --listen=:40000 --headless=true --api-version=2 --accept-multiclient exec /usr/local/bin/geth --continue --" +fi + +if [ "true" == "$RUN_BOOTNODE" ]; then + $START_CMD \ --nodekeyhex="${BOOTNODE_KEY}" \ --nodiscover \ --ipcdisable \ --networkid=${NETWORK_ID} \ - --netrestrict="${NETRESTRICT}" 2>&1 | tee /var/log/geth_bootnode.log + --netrestrict="${NETRESTRICT}" else cd /opt/testnet/accounts ./import_keys.sh @@ -60,7 +65,7 @@ else --statediff.writing=true" fi - geth \ + $START_CMD \ --bootnodes="${ENODE}" \ --allow-insecure-unlock \ --http \ @@ -80,5 +85,5 @@ else --mine \ --miner.threads=1 \ --verbosity=5 \ - --miner.etherbase="${ETHERBASE}" ${STATEDIFF_OPTS} 2>&1 | tee /var/log/geth.log + --miner.etherbase="${ETHERBASE}" ${STATEDIFF_OPTS} fi