From 7ac21432a84fbdd215e3d1d347d29782a63cedb1 Mon Sep 17 00:00:00 2001 From: Alexander Kolesov Date: Fri, 12 Nov 2021 12:27:05 +0300 Subject: [PATCH 1/4] Add an ability to override home directory in docker images via build arg --- docker/cheqd_node.md | 2 ++ docker/cheqd_node/Dockerfile | 8 +++++--- 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/docker/cheqd_node.md b/docker/cheqd_node.md index fb89b4250..8ca44e760 100644 --- a/docker/cheqd_node.md +++ b/docker/cheqd_node.md @@ -23,6 +23,8 @@ To build the image: * Go to the repository root; * Run `docker build -f docker/cheqd_node/Dockerfile -t cheqd-node .`. +Default home directory for `cheqd` user is `/cheqd`. It can be overridden via `CHEQD_HOME_DIR` build argument. Example: `--build-arg CHEQD_HOME_DIR=/home/cheqd`. + Note: If you are using M1 Macbook you should modify the FROM statement in the Dockerfile, should be like this "FROM --platform=linux/amd64 golang:buster as builder " ## Usage diff --git a/docker/cheqd_node/Dockerfile b/docker/cheqd_node/Dockerfile index 4d8e388b3..710a42cdf 100644 --- a/docker/cheqd_node/Dockerfile +++ b/docker/cheqd_node/Dockerfile @@ -42,11 +42,13 @@ COPY --from=builder /go/bin/cheqd-noded /bin COPY docker/cheqd_node/node-runner.sh /bin/node-runner RUN chmod +x /bin/node-runner +ARG CHEQD_HOME_DIR="/cheqd" + RUN groupadd --system --gid 1000 cheqd && \ - useradd --system --create-home --home-dir /cheqd --shell /bin/bash --gid cheqd --uid 1000 cheqd -RUN chown -R cheqd /cheqd + useradd --system --create-home --home-dir ${CHEQD_HOME_DIR} --shell /bin/bash --gid cheqd --uid 1000 cheqd +RUN chown -R cheqd ${CHEQD_HOME_DIR} -WORKDIR /cheqd +WORKDIR ${CHEQD_HOME_DIR} USER cheqd EXPOSE 26656 26657 From cab569e920f87f9ff965aec73873b41a81b5236b Mon Sep 17 00:00:00 2001 From: Alexander Kolesov Date: Fri, 12 Nov 2021 12:42:28 +0300 Subject: [PATCH 2/4] Suppress logging during secrets management in docker --- docker/cheqd_node/node-runner.sh | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/docker/cheqd_node/node-runner.sh b/docker/cheqd_node/node-runner.sh index e880a29f1..c29ce26cb 100644 --- a/docker/cheqd_node/node-runner.sh +++ b/docker/cheqd_node/node-runner.sh @@ -18,10 +18,19 @@ fi # Update configs +set - # Disable ditailed command logging + +echo "Updating genesis" echo "$GENESIS" | base64 --decode > $NODE_HOME/config/genesis.json + +echo "Updating node key" echo "$NODE_KEY" | base64 --decode > $NODE_HOME/config/node_key.json + +echo "Updating validator key" echo "$PRIV_VALIDATOR_KEY" | base64 --decode > $NODE_HOME/config/priv_validator_key.json +set -x # Re-enable ditailed command logging + # Run node NODE_ARGS=${NODE_ARGS:-} # Allo node args to be empty cheqd-noded start $NODE_ARGS From 5c2a2437bc0f2149caec156df649e6e7b90a7ffd Mon Sep 17 00:00:00 2001 From: Alexander Kolesov Date: Fri, 12 Nov 2021 15:05:12 +0300 Subject: [PATCH 3/4] Pull configure commands to dockerfiles --- docker/cheqd_node.md | 18 ++++++++++++++++-- docker/cheqd_node/node-runner.sh | 18 ++++++++++++++++++ 2 files changed, 34 insertions(+), 2 deletions(-) diff --git a/docker/cheqd_node.md b/docker/cheqd_node.md index 8ca44e760..6d4ae6e1c 100644 --- a/docker/cheqd_node.md +++ b/docker/cheqd_node.md @@ -43,7 +43,7 @@ docker run -it --rm cheqd-node Used to initialize configuration files and run a node in one command. -Parameters: +Parameters that can be passed via environment variables: * `NODE_MONIKER` - node moniker; * `GENESIS` - base64 encoded content of `genesis.json`; @@ -51,9 +51,23 @@ Parameters: * `PRIV_VALIDATOR_KEY` - base64 encoded content of `priv_validator_key.json`; * `NODE_ARGS` \(optional\) - argument string passed to the `cheqd-noded start` command. +Additional parameters that will be applied via `cheqd-noded configure`: + +* `CREATE_EMPTY_BLOCKS` +* `FASTSYNC_VERSION` +* `MIN_GAS_PRICES` +* `RPC_LADDR` +* `P2P_EXTERNAL_ADDRESS` +* `P2P_LADDR` +* `P2P_MAX_PACKET_MSG_PAYLOAD_SIZE` +* `P2P_PERSISTENT_PEERS` +* `P2P_RECV_RATE` +* `P2P_SEED_MODE` +* `P2P_SEEDS` +* `P2P_SEND_RATE` + Usage: ```text docker run -it --rm --entrypoint node-runner -e NODE_MONIKER= -e GENESIS="" -e NODE_KEY="" -e PRIV_VALIDATOR_KEY="" cheqd-node ``` - diff --git a/docker/cheqd_node/node-runner.sh b/docker/cheqd_node/node-runner.sh index c29ce26cb..46c3f5375 100644 --- a/docker/cheqd_node/node-runner.sh +++ b/docker/cheqd_node/node-runner.sh @@ -17,6 +17,23 @@ else fi +# Run configure +# `! -z` is used instead of `-n` to distinguilsh null and empty values + +if [[ ! -z ${CREATE_EMPTY_BLOCKS+x} ]]; then cheqd-noded configure create-empty-blocks ${CREATE_EMPTY_BLOCKS}; fi +if [[ ! -z ${FASTSYNC_VERSION+x} ]]; then cheqd-noded configure fastsync-version ${FASTSYNC_VERSION}; fi +if [[ ! -z ${MIN_GAS_PRICES+x} ]]; then cheqd-noded configure min-gas-prices ${MIN_GAS_PRICES}; fi +if [[ ! -z ${RPC_LADDR+x} ]]; then cheqd-noded configure rpc-laddr ${RPC_LADDR}; fi +if [[ ! -z ${P2P_EXTERNAL_ADDRESS+x} ]]; then cheqd-noded configure p2p external-address ${P2P_EXTERNAL_ADDRESS}; fi +if [[ ! -z ${P2P_LADDR+x} ]]; then cheqd-noded configure p2p laddr ${P2P_LADDR}; fi +if [[ ! -z ${P2P_MAX_PACKET_MSG_PAYLOAD_SIZE+x} ]]; then cheqd-noded configure p2p max-packet-msg-payload-size ${P2P_MAX_PACKET_MSG_PAYLOAD_SIZE}; fi +if [[ ! -z ${P2P_PERSISTENT_PEERS+x} ]]; then cheqd-noded configure p2p persistent-peers ${P2P_PERSISTENT_PEERS}; fi +if [[ ! -z ${P2P_RECV_RATE+x} ]]; then cheqd-noded configure p2p recv-rate ${P2P_RECV_RATE}; fi +if [[ ! -z ${P2P_SEED_MODE+x} ]]; then cheqd-noded configure p2p seed-mode ${P2P_SEED_MODE}; fi +if [[ ! -z ${P2P_SEEDS+x} ]]; then cheqd-noded configure p2p seeds ${P2P_SEEDS}; fi +if [[ ! -z ${P2P_SEND_RATE+x} ]]; then cheqd-noded configure p2p send-rate ${P2P_SEND_RATE}; fi + + # Update configs set - # Disable ditailed command logging @@ -31,6 +48,7 @@ echo "$PRIV_VALIDATOR_KEY" | base64 --decode > $NODE_HOME/config/priv_validator_ set -x # Re-enable ditailed command logging + # Run node NODE_ARGS=${NODE_ARGS:-} # Allo node args to be empty cheqd-noded start $NODE_ARGS From ed44a882c084ab04c4ba56e0887bf75f3a6c0528 Mon Sep 17 00:00:00 2001 From: Ankur Banerjee Date: Fri, 12 Nov 2021 14:48:05 +0000 Subject: [PATCH 4/4] Updated docker node-runner init --- docker/cheqd_node.md | 10 ++++------ docker/cheqd_node/Dockerfile | 5 ++--- docker/cheqd_node/node-runner.sh | 21 ++++++--------------- 3 files changed, 12 insertions(+), 24 deletions(-) diff --git a/docker/cheqd_node.md b/docker/cheqd_node.md index 6d4ae6e1c..e1b17a43d 100644 --- a/docker/cheqd_node.md +++ b/docker/cheqd_node.md @@ -12,7 +12,7 @@ You can find prebuilt package here: To pull it use: -```text +```bash docker pull ghcr.io/cheqd/cheqd-node:latest ``` @@ -35,7 +35,7 @@ Note: If you are using M1 Macbook you should modify the FROM statement in the Do Usage: -```text +```bash docker run -it --rm cheqd-node ``` @@ -47,8 +47,6 @@ Parameters that can be passed via environment variables: * `NODE_MONIKER` - node moniker; * `GENESIS` - base64 encoded content of `genesis.json`; -* `NODE_KEY` - base64 encoded content of `node_key.json`; -* `PRIV_VALIDATOR_KEY` - base64 encoded content of `priv_validator_key.json`; * `NODE_ARGS` \(optional\) - argument string passed to the `cheqd-noded start` command. Additional parameters that will be applied via `cheqd-noded configure`: @@ -68,6 +66,6 @@ Additional parameters that will be applied via `cheqd-noded configure`: Usage: -```text -docker run -it --rm --entrypoint node-runner -e NODE_MONIKER= -e GENESIS="" -e NODE_KEY="" -e PRIV_VALIDATOR_KEY="" cheqd-node +```bash +docker run -it -v data:/cheqd --rm --entrypoint node-runner -e NODE_MONIKER= -e GENESIS="" cheqd-node ``` diff --git a/docker/cheqd_node/Dockerfile b/docker/cheqd_node/Dockerfile index 710a42cdf..c2d8d2c49 100644 --- a/docker/cheqd_node/Dockerfile +++ b/docker/cheqd_node/Dockerfile @@ -33,7 +33,7 @@ RUN starport chain build ##### Run container ##### -FROM debian:buster +FROM ubuntu:focal # Node binary COPY --from=builder /go/bin/cheqd-noded /bin @@ -46,7 +46,6 @@ ARG CHEQD_HOME_DIR="/cheqd" RUN groupadd --system --gid 1000 cheqd && \ useradd --system --create-home --home-dir ${CHEQD_HOME_DIR} --shell /bin/bash --gid cheqd --uid 1000 cheqd -RUN chown -R cheqd ${CHEQD_HOME_DIR} WORKDIR ${CHEQD_HOME_DIR} USER cheqd @@ -54,4 +53,4 @@ USER cheqd EXPOSE 26656 26657 STOPSIGNAL SIGTERM -ENTRYPOINT [ "cheqd-noded" ] +ENTRYPOINT [ "node-runner" ] diff --git a/docker/cheqd_node/node-runner.sh b/docker/cheqd_node/node-runner.sh index 46c3f5375..4bb1f870d 100644 --- a/docker/cheqd_node/node-runner.sh +++ b/docker/cheqd_node/node-runner.sh @@ -4,19 +4,17 @@ set -euox pipefail -NODE_HOME="$HOME/.cheqdnode" - +CHEQD_ROOT_DIR="$HOME/.cheqdnode" # Init node config directory -if [ ! -d "${NODE_HOME}/config" ] +if [ ! -d "${CHEQD_ROOT_DIR}/config" ] then - echo "Node home not found. Initializing." - cheqd-noded init $NODE_MONIKER + echo "Node config not found. Initializing." + cheqd-noded init $NODE_MONIKER --home else - echo "Node home exists. Skipping initialization." + echo "Node config exists. Skipping initialization." fi - # Run configure # `! -z` is used instead of `-n` to distinguilsh null and empty values @@ -38,17 +36,10 @@ if [[ ! -z ${P2P_SEND_RATE+x} ]]; then cheqd-noded configure p2p send-rate ${P2P set - # Disable ditailed command logging echo "Updating genesis" -echo "$GENESIS" | base64 --decode > $NODE_HOME/config/genesis.json - -echo "Updating node key" -echo "$NODE_KEY" | base64 --decode > $NODE_HOME/config/node_key.json - -echo "Updating validator key" -echo "$PRIV_VALIDATOR_KEY" | base64 --decode > $NODE_HOME/config/priv_validator_key.json +echo "$GENESIS" | base64 --decode > $CHEQD_ROOT_DIR/config/genesis.json set -x # Re-enable ditailed command logging - # Run node NODE_ARGS=${NODE_ARGS:-} # Allo node args to be empty cheqd-noded start $NODE_ARGS