diff --git a/docker/docker-entrypoint.sh b/docker/docker-entrypoint.sh index d883f0eb..cb5c9a85 100644 --- a/docker/docker-entrypoint.sh +++ b/docker/docker-entrypoint.sh @@ -1,6 +1,6 @@ #!/bin/bash -# Environment variables from files +# Environment variables from files in form of foo=bar # If set to file path, read the file and export the variables # If set to directory path, read all files in the directory and export the variables if [[ -n "${ENV_PATH}" ]]; then @@ -9,7 +9,12 @@ if [[ -n "${ENV_PATH}" ]]; then set +a fi -# Bootstrap node from URL +# Codex Network +if [[ -n "${NETWORK}" ]]; then + export BOOTSTRAP_NODE_FROM_URL="${BOOTSTRAP_NODE_FROM_URL:-https://spr.codex.storage/${NETWORK}}" +fi + +# Bootstrap node URL if [[ -n "${BOOTSTRAP_NODE_URL}" ]]; then BOOTSTRAP_NODE_URL="${BOOTSTRAP_NODE_URL}/api/codex/v1/spr" WAIT=${BOOTSTRAP_NODE_URL_WAIT:-300} @@ -21,7 +26,6 @@ if [[ -n "${BOOTSTRAP_NODE_URL}" ]]; then # Check if exit code is 0 and returned value is not empty if [[ $? -eq 0 && -n "${SPR}" ]]; then export CODEX_BOOTSTRAP_NODE="${SPR}" - echo "Bootstrap node: CODEX_BOOTSTRAP_NODE=${CODEX_BOOTSTRAP_NODE}" break else # Sleep and check again @@ -31,6 +35,49 @@ if [[ -n "${BOOTSTRAP_NODE_URL}" ]]; then done fi +# Bootstrap node from URL +if [[ -n "${BOOTSTRAP_NODE_FROM_URL}" ]]; then + WAIT=${BOOTSTRAP_NODE_FROM_URL_WAIT:-300} + SECONDS=0 + SLEEP=1 + # Run and retry if fail + while (( SECONDS < WAIT )); do + SPR=($(curl -s -f -m 5 "${BOOTSTRAP_NODE_FROM_URL}")) + # Check if exit code is 0 and returned value is not empty + if [[ $? -eq 0 && -n "${SPR}" ]]; then + for node in "${SPR[@]}"; do + bootstrap+="--bootstrap-node=$node " + done + set -- "$@" ${bootstrap} + break + else + # Sleep and check again + echo "Can't get SPR from ${BOOTSTRAP_NODE_FROM_URL} - Retry in $SLEEP seconds / $((WAIT - SECONDS))" + sleep $SLEEP + fi + done +fi + +# Marketplace address from URL +if [[ -n "${MARKETPLACE_ADDRESS_FROM_URL}" ]]; then + WAIT=${MARKETPLACE_ADDRESS_FROM_URL_WAIT:-300} + SECONDS=0 + SLEEP=1 + # Run and retry if fail + while (( SECONDS < WAIT )); do + MARKETPLACE_ADDRESS=($(curl -s -f -m 5 "${MARKETPLACE_ADDRESS_FROM_URL}")) + # Check if exit code is 0 and returned value is not empty + if [[ $? -eq 0 && -n "${MARKETPLACE_ADDRESS}" ]]; then + export CODEX_MARKETPLACE_ADDRESS="${MARKETPLACE_ADDRESS}" + break + else + # Sleep and check again + echo "Can't get Marketplace address from ${MARKETPLACE_ADDRESS_FROM_URL} - Retry in $SLEEP seconds / $((WAIT - SECONDS))" + sleep $SLEEP + fi + done +fi + # Stop Codex run if unable to get SPR if [[ -n "${BOOTSTRAP_NODE_URL}" && -z "${CODEX_BOOTSTRAP_NODE}" ]]; then echo "Unable to get SPR from ${BOOTSTRAP_NODE_URL} in ${BOOTSTRAP_NODE_URL_WAIT} seconds - Stop Codex run" @@ -113,6 +160,12 @@ if [[ "$@" == *"prover"* ]]; then [[ $? -ne 0 ]] && { echo "Failed to download circuit files"; exit 1; } fi +# Show +echo -e "\nCodex run parameters:" +vars=$(env | grep CODEX_) +echo -e "${vars//CODEX_/ - CODEX_}" +echo -e " - $@\n" + # Run echo "Run Codex node" exec "$@"