-
Notifications
You must be signed in to change notification settings - Fork 12
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge pull request #35 from rwth-acis/v1.2.1
V1.2.1
- Loading branch information
Showing
4 changed files
with
112 additions
and
4 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,33 @@ | ||
FROM openjdk:17-jdk-alpine | ||
|
||
ENV HTTP_PORT=8080 | ||
ENV HTTPS_PORT=8443 | ||
ENV LAS2PEER_PORT=9011 | ||
|
||
RUN apk add --update bash tzdata curl && rm -f /var/cache/apk/* | ||
RUN addgroup -g 1000 -S las2peer && \ | ||
adduser -u 1000 -S las2peer -G las2peer | ||
|
||
COPY --chown=las2peer:las2peer . /src | ||
WORKDIR /src | ||
|
||
# run the rest as unprivileged user | ||
USER las2peer | ||
# Include this in case you build on a windows machine | ||
#RUN dos2unix gradlew | ||
#RUN dos2unix gradle.properties | ||
#RUN dos2unix /src/docker-entrypoint.sh | ||
#RUN dos2unix /src/etc/i5.las2peer.connectors.webConnector.WebConnector.properties | ||
#RUN dos2unix /src/etc/i5.las2peer.services.servicePackage.TemplateService.properties | ||
RUN chmod -R a+rwx /src | ||
RUN chmod +x /src/docker-entrypoint.sh | ||
RUN chmod +x gradlew && ./gradlew build | ||
|
||
|
||
|
||
|
||
EXPOSE $HTTP_PORT | ||
EXPOSE $HTTPS_PORT | ||
EXPOSE $LAS2PEER_PORT | ||
RUN chmod +x /src/docker-entrypoint.sh | ||
ENTRYPOINT ["/src/docker-entrypoint.sh"] |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,74 @@ | ||
#!/usr/bin/env bash | ||
|
||
set -e | ||
|
||
# print all comands to console if DEBUG is set | ||
if [[ ! -z "${DEBUG}" ]]; then | ||
set -x | ||
fi | ||
NODE_ID_SEED=${NODE_ID_SEED:-$RANDOM} | ||
|
||
# set some helpful variables | ||
export SERVICE_PROPERTY_FILE='etc/i5.las2peer.services.servicePackage.TemplateService.properties' | ||
export WEB_CONNECTOR_PROPERTY_FILE='etc/i5.las2peer.connectors.webConnector.WebConnector.properties' | ||
export SERVICE_VERSION=$(awk -F "=" '/service.version/ {print $2}' gradle.properties) | ||
export SERVICE_NAME=$(awk -F "=" '/service.name/ {print $2}' gradle.properties) | ||
export SERVICE_CLASS=$(awk -F "=" '/service.class/ {print $2}' gradle.properties) | ||
export SERVICE=${SERVICE_NAME}.${SERVICE_CLASS}@${SERVICE_VERSION} | ||
|
||
function set_in_service_config { | ||
sed -i "s?${1}[[:blank:]]*=.*?${1}=${2}?g" ${SERVICE_PROPERTY_FILE} | ||
} | ||
|
||
|
||
# set defaults for optional service parameters | ||
[[ -z "${SERVICE_PASSPHRASE}" ]] && export SERVICE_PASSPHRASE='template' | ||
|
||
# wait for any bootstrap host to be available | ||
if [[ ! -z "${BOOTSTRAP}" ]]; then | ||
echo "Waiting for any bootstrap host to become available..." | ||
for host_port in ${BOOTSTRAP//,/ }; do | ||
arr_host_port=(${host_port//:/ }) | ||
host=${arr_host_port[0]} | ||
port=${arr_host_port[1]} | ||
if { </dev/tcp/${host}/${port}; } 2>/dev/null; then | ||
echo "${host_port} is available. Continuing..." | ||
break | ||
fi | ||
done | ||
fi | ||
# prevent glob expansion in lib/* | ||
set -f | ||
LAUNCH_COMMAND='java -cp lib/* --add-opens java.base/java.lang=ALL-UNNAMED --add-opens java.base/java.util=ALL-UNNAMED i5.las2peer.tools.L2pNodeLauncher -s service -p '"${LAS2PEER_PORT} ${SERVICE_EXTRA_ARGS}" | ||
if [[ ! -z "${BOOTSTRAP}" ]]; then | ||
LAUNCH_COMMAND="${LAUNCH_COMMAND} -b ${BOOTSTRAP}" | ||
fi | ||
|
||
# it's realistic for different nodes to use different accounts (i.e., to have | ||
# different node operators). this function echos the N-th mnemonic if the | ||
# variable WALLET is set to N. If not, first mnemonic is used | ||
function selectMnemonic { | ||
declare -a mnemonics=("differ employ cook sport clinic wedding melody column pave stuff oak price" "memory wrist half aunt shrug elbow upper anxiety maximum valve finish stay" "alert sword real code safe divorce firm detect donate cupboard forward other" "pair stem change april else stage resource accident will divert voyage lawn" "lamp elbow happy never cake very weird mix episode either chimney episode" "cool pioneer toe kiwi decline receive stamp write boy border check retire" "obvious lady prize shrimp taste position abstract promote market wink silver proof" "tired office manage bird scheme gorilla siren food abandon mansion field caution" "resemble cattle regret priority hen six century hungry rice grape patch family" "access crazy can job volume utility dial position shaft stadium soccer seven") | ||
if [[ ${WALLET} =~ ^[0-9]+$ && ${WALLET} -lt ${#mnemonics[@]} ]]; then | ||
# get N-th mnemonic | ||
echo "${mnemonics[${WALLET}]}" | ||
else | ||
# note: zsh and others use 1-based indexing. this requires bash | ||
echo "${mnemonics[0]}" | ||
fi | ||
} | ||
|
||
#prepare pastry properties | ||
echo external_address = $(curl -s https://ipinfo.io/ip):${LAS2PEER_PORT} > etc/pastry.properties | ||
|
||
# start the service within a las2peer node | ||
if [[ -z "${@}" ]] | ||
then | ||
if [ -n "$LAS2PEER_ETH_HOST" ]; then | ||
exec ${LAUNCH_COMMAND} --node-id-seed $NODE_ID_SEED --observer --ethereum-mnemonic "$(selectMnemonic)" uploadStartupDirectory startService\("'""${SERVICE}""'", "'""${SERVICE_PASSPHRASE}""'"\) startWebConnector "node=getNodeAsEthereumNode()" "registry=node.getRegistryClient()" "n=getNodeAsEthereumNode()" "r=n.getRegistryClient()" | ||
else | ||
exec ${LAUNCH_COMMAND} --node-id-seed $NODE_ID_SEED --observer uploadStartupDirectory startService\("'""${SERVICE}""'", "'""${SERVICE_PASSPHRASE}""'"\) startWebConnector | ||
fi | ||
else | ||
exec ${LAUNCH_COMMAND} ${@} | ||
fi |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters