Files
qortal/docker-start.sh

45 lines
1.5 KiB
Bash

#!/bin/sh
set -eu
DEFAULT_JVM_MEMORY_ARGS='-XX:MaxRAMPercentage=25 -XX:+UseG1GC -Xss1024k'
START_ARGS_FILE="${QORTAL_START_ARGUMENTS_FILE:-/qortal/start-arguments.txt}"
SETTINGS_FILE="${QORTAL_SETTINGS_FILE:-/qortal/settings.json}"
if [ ! -f "${SETTINGS_FILE}" ]; then
printf '{}\n' > "${SETTINGS_FILE}"
fi
if [ ! -f "${START_ARGS_FILE}" ]; then
printf '%s\n' "${QORTAL_JVM_MEMORY_ARGS:-${DEFAULT_JVM_MEMORY_ARGS}}" > "${START_ARGS_FILE}"
fi
# Convert start-arguments file to a single shell-split argument string.
file_args="$(awk '
{
sub(/#.*/, "");
if (NF) {
for (i = 1; i <= NF; i++) {
printf "%s ", $i;
}
}
}
' "${START_ARGS_FILE}" 2>/dev/null || true)"
jvm_memory_args="${file_args:-${QORTAL_JVM_MEMORY_ARGS:-${DEFAULT_JVM_MEMORY_ARGS}}}"
echo "Using JVM memory args from ${START_ARGS_FILE}: ${jvm_memory_args}"
echo "Using settings file: ${SETTINGS_FILE}"
if [ -f "${SETTINGS_FILE}" ]; then
api_port="$(grep -E '"apiPort"[[:space:]]*:' "${SETTINGS_FILE}" | head -n1 | sed -E 's/.*:[[:space:]]*([0-9]+).*/\1/' || true)"
p2p_port="$(grep -E '"listenPort"[[:space:]]*:' "${SETTINGS_FILE}" | head -n1 | sed -E 's/.*:[[:space:]]*([0-9]+).*/\1/' || true)"
if [ -n "${api_port}" ] || [ -n "${p2p_port}" ]; then
echo "Configured ports from settings.json: apiPort=${api_port:-?} listenPort=${p2p_port:-?}"
fi
fi
if [ "$#" -eq 0 ]; then
set -- -jar /usr/local/qortal/qortal.jar "${SETTINGS_FILE}"
fi
# shellcheck disable=SC2086
exec java ${jvm_memory_args} -Djava.net.preferIPv4Stack=false "$@"