From 76a8dbf46cfa99d0ee7be4c34dba6733638354d4 Mon Sep 17 00:00:00 2001 From: Hugo Trentesaux <hugo.trentesaux@lilo.org> Date: Wed, 15 Jan 2025 15:55:18 +0100 Subject: [PATCH] Resolve "Generate key command is missing chain argument" (nodes/rust/duniter-v2s!309) * uppercase * add chain arg to generate key command --- docker/Dockerfile | 4 ++-- docker/docker-entrypoint | 35 ++++++++++++++++++++++++----------- 2 files changed, 26 insertions(+), 13 deletions(-) diff --git a/docker/Dockerfile b/docker/Dockerfile index de4215ee0..f0336f5f1 100644 --- a/docker/Dockerfile +++ b/docker/Dockerfile @@ -1,5 +1,5 @@ # Workaround for https://github.com/containers/buildah/issues/4742 -FROM debian:bullseye-slim as target +FROM debian:bullseye-slim AS target # ------------------------------------------------------------------------------ # Build Stage @@ -7,7 +7,7 @@ FROM debian:bullseye-slim as target # When building for a foreign arch, use cross-compilation # https://www.docker.com/blog/faster-multi-platform-builds-dockerfile-cross-compilation-guide/ -FROM --platform=$BUILDPLATFORM rust:1-bullseye as build +FROM --platform=$BUILDPLATFORM rust:1-bullseye AS build ARG BUILDPLATFORM ARG TARGETPLATFORM diff --git a/docker/docker-entrypoint b/docker/docker-entrypoint index 16b0952aa..3666aad0e 100755 --- a/docker/docker-entrypoint +++ b/docker/docker-entrypoint @@ -21,27 +21,45 @@ function ternary () { fi } +# Define chain name at the beginning +# with #274 we could have default given in network branch +DUNITER_CHAIN_NAME="${DUNITER_CHAIN_NAME:-dev}" +case "$DUNITER_CHAIN_NAME" in + dev) + chain=(--dev) + ;; + *) + chain=(--chain "$DUNITER_CHAIN_NAME") + ;; +esac + +# Node name will appear on network DUNITER_NODE_NAME="${DUNITER_NODE_NAME:-$DUNITER_INSTANCE_NAME}" if [ -n "$DUNITER_NODE_NAME" ]; then set -- "$@" --name "$DUNITER_NODE_NAME" fi +# Path of key file. Should be generated below if not present before starting Duniter _DUNITER_KEY_FILE=/var/lib/duniter/node.key set -- "$@" --node-key-file "$_DUNITER_KEY_FILE" +# Generate node.key if not existing (chain name is required) if [ ! -f "$_DUNITER_KEY_FILE" ]; then echo "Generating node key file '$_DUNITER_KEY_FILE'..." - duniter key generate-node-key --file "$_DUNITER_KEY_FILE" + duniter key generate-node-key --file "$_DUNITER_KEY_FILE" "${chain[@]}" else echo "Node key file '$_DUNITER_KEY_FILE' exists." fi +# Log peer ID _DUNITER_PEER_ID="$(duniter key inspect-node-key --file "$_DUNITER_KEY_FILE")" echo "Node peer ID is '$_DUNITER_PEER_ID'." +# Define public address (with dns, correct port and protocol for instance) if [ -n "$DUNITER_PUBLIC_ADDR" ]; then set -- "$@" --public-addr "$DUNITER_PUBLIC_ADDR" fi +# Define listen address (inside docker) if [ -n "$DUNITER_LISTEN_ADDR" ]; then set -- "$@" --listen-addr "$DUNITER_LISTEN_ADDR" fi @@ -49,6 +67,7 @@ fi DUNITER_RPC_CORS="${DUNITER_RPC_CORS:-all}" set -- "$@" --rpc-cors "$DUNITER_RPC_CORS" +# In case of validator, unsafe rpc methods are needed (like rotate_key) and should not be exposed publicly DUNITER_VALIDATOR=$(boolean "${DUNITER_VALIDATOR:-false}") if [ "$DUNITER_VALIDATOR" = true ]; then set -- "$@" --rpc-methods Unsafe --validator @@ -64,6 +83,7 @@ if [ "$DUNITER_DISABLE_TELEMETRY" = true ]; then set -- "$@" --no-telemetry fi +# Set pruning profile DUNITER_PRUNING_PROFILE="${DUNITER_PRUNING_PROFILE:-default}" case "$DUNITER_PRUNING_PROFILE" in default) @@ -79,16 +99,9 @@ case "$DUNITER_PRUNING_PROFILE" in ;; esac -DUNITER_CHAIN_NAME="${DUNITER_CHAIN_NAME:-dev}" -case "$DUNITER_CHAIN_NAME" in - dev) - chain=(--dev) - ;; - *) - chain=(--chain "$DUNITER_CHAIN_NAME") - ;; -esac - +# Set main command +# Since we are inside docker, we can bind to all interfaces. +# User will bind port to host interface or set reverse proxy when needed. set -- "$@" \ "${chain[@]}" \ -d /var/lib/duniter --unsafe-rpc-external -- GitLab