storj/cmd/storagenode/entrypoint
Yaroslav Vorobiov 244c488b10 storagenode: docker image autoupdate binaries
Get storagenode and storagenode-updater binaries during
run of the container to not to release new docker image
on each new version of the storagenode binary.

Change-Id: Ic0eb4a9c18a98598dfd9b96c1d352c7399496fd2
2021-04-21 17:56:20 +00:00

91 lines
2.8 KiB
Bash
Executable File

#!/bin/sh
set -euo pipefail
function get_default_url {
process=$1
version=$2
echo $(wget -O - "${VERSION_SERVER_URL}/processes/${process}/${version}/url?os=linux&arch=${GOARCH}")
}
function get_binary {
binary=$1
url=$2
wget -O - ${url} | unzip -p - > /app/${binary}
chmod u+x /app/${binary}
}
if [[ ! -f "storagenode-updater" ]]; then
echo "downloading storagenode-updater"
get_binary storagenode-updater $(get_default_url storagenode-updater minimum)
if ./storagenode-updater should-update storagenode-updater \
--binary-location /app/storagenode-updater \
--identity-dir identity \
--version.server-address=${VERSION_SERVER_URL} 2>/dev/null
then
echo "updating storagenode-updater"
get_binary storagenode-updater $(get_default_url storagenode-updater suggested)
fi
fi
if [[ ! -f "storagenode" ]]; then
echo "downloading storagenode"
if ./storagenode-updater should-update storagenode \
--identity-dir identity \
--version.server-address=${VERSION_SERVER_URL} 2>/dev/null
then
get_binary storagenode $(get_default_url storagenode suggested)
else
get_binary storagenode $(get_default_url storagenode minimum)
fi
fi
RUN_PARAMS="${RUN_PARAMS:-} --config-dir config"
RUN_PARAMS="${RUN_PARAMS:-} --identity-dir identity"
RUN_PARAMS="${RUN_PARAMS:-} --metrics.app-suffix=-alpha"
RUN_PARAMS="${RUN_PARAMS:-} --metrics.interval=30m"
RUN_PARAMS="${RUN_PARAMS:-} --console.address=:14002"
if [[ -n "${VERSION_SERVER_URL:-}" ]]; then
RUN_PARAMS="${RUN_PARAMS:-} --version.server-address=${VERSION_SERVER_URL}"
fi
if [[ -n "${ADDRESS:-}" ]]; then
RUN_PARAMS="${RUN_PARAMS:-} --contact.external-address=${ADDRESS}"
fi
if [[ -n "${EMAIL:-}" ]]; then
RUN_PARAMS="${RUN_PARAMS:-} --operator.email=${EMAIL}"
fi
if [[ -n "${WALLET:-}" ]]; then
RUN_PARAMS="${RUN_PARAMS:-} --operator.wallet=${WALLET}"
fi
if [[ -n "${STORAGE:-}" ]]; then
RUN_PARAMS="${RUN_PARAMS:-} --storage.allocated-disk-space=${STORAGE}"
fi
if [[ "${AUTO_UPDATE:-}" != "true" ]]; then
AUTO_UPDATE="false"
fi
if [[ "${SETUP:-}" == "true" ]]; then
exec ./storagenode setup $RUN_PARAMS ${*}
else
# install supervisor
if ! apk list supervisor 2>/dev/null | grep "supervisor"; then
echo "installing supervisor"
mkdir -p /var/log/supervisor
# permorm installation during runtime to not use dockerfile RUN directive to support arch-independent build process
apk add --no-cache --repositories-file=/dev/null /var/lib/apk-supervisor/*.apk
sed -i \
"s#^command=/app/storagenode-updater\$#command=/app/storagenode-updater run --binary-location /app/storagenode ${RUN_PARAMS} ${*}#" \
/etc/supervisord.conf
sed -i \
"s#^command=/app/storagenode\$#command=/app/storagenode run ${RUN_PARAMS} ${*}#" \
/etc/supervisord.conf
fi
exec /usr/bin/supervisord -c /etc/supervisord.conf
fi