diff --git a/Dockerfile b/Dockerfile index d778d2c56ae837fd1ed5ce06f1c495797f2655c5..91b1946622fa839986015e3f39052bd0711e570f 100644 --- a/Dockerfile +++ b/Dockerfile @@ -8,13 +8,12 @@ EXPOSE 8545 8546 30303 ENV USERNAME=bfa HOME=/home/bfa ENV BFAHOME=${HOME}/bfa BFANETWORKIDPROD=47525974938 BFANETWORKIDTEST=55555000000 VIRTUALIZATION=DOCKER ENV BFANETWORKDIRPROD=${BFAHOME}/network BFANETWORKDIRTEST=${BFAHOME}/test2network PATH=${BFAHOME}/bin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin -RUN adduser -u 30303 -s /bin/bash -h ${HOME} -D ${USERNAME} ${USERNAME} && apk add --no-cache git bash jq perl perl-class-accessor perl-json perl-json-xs perl-lwp-protocol-https nodejs npm binutils python3 && rm -f /var/cache/apk/* +RUN adduser -u 30303 -s /bin/bash -h ${HOME} -D ${USERNAME} ${USERNAME} && apk add --no-cache git bash jq perl perl-class-accessor perl-json perl-json-xs perl-lwp-protocol-https nodejs npm binutils python3 curl && rm -f /var/cache/apk/* USER ${USERNAME} WORKDIR ${HOME} RUN git clone --quiet https://gitlab.bfa.ar/blockchain/nucleo.git ${BFAHOME} && cd ${BFAHOME} && npm install --no-optional && npm audit fix ENV BFANETWORKID=${BFANETWORKIDPROD} BFANETWORKDIR=${BFANETWORKDIRPROD} ENV BFANODEDIR=${BFANETWORKDIR}/node BFATOML=${BFANETWORKDIR}/config.toml RUN mkdir -p ${BFANODEDIR} && ln -s ${BFANODEDIR} .ethereum -RUN sed -i 's/^HTTPHost = "127.0.0.1"/HTTPHost = "0.0.0.0"/' ${BFATOML} WORKDIR ${BFAHOME} VOLUME [ "/home/bfa" ] diff --git a/start.sh b/start.sh index 2f845c4987e108d8347d6254364823270a1f453f..447a486d64cfb45310a390c977a9c83f1278b888 100755 --- a/start.sh +++ b/start.sh @@ -8,8 +8,38 @@ then exit 1 fi -mkdir -p ${HOME}/dockers/volumes/bfanodo,home,bfa,bfa,network,node,geth -mounts="-v ${HOME}/dockers/volumes/bfanodo,home,bfa,bfa,network,node,geth:/home/bfa/bfa/network/node/geth" +if [ "$1" = "test" ] +then + tag="test" + class="test" + name="bfatestnode" +else + tag="latest" + class="prod" + name="bfanodo" +fi + +vd="${HOME}/dockers/volumes/${name},home,bfa,bfa,network,node,geth" +mkdir -p "${vd}" +mounts="-v ${vd}:/home/bfa/bfa/network/node/geth" + +if [ "$UID" = "0" ] +then + chown -R 30303:30303 ${vd} +else + # This is a bit slower, but works + docker run --rm $mounts -u root alpine chown -R 30303:30303 /home/bfa/bfa/network +fi -docker run --rm $mounts -u root alpine chown -R 30303:30303 /home/bfa/bfa/network -docker run -d --memory 4g $mounts -p 8545:8545 -p 127.0.0.1:8546:8546 -p 30303:30303 --restart=unless-stopped --name bfanodo rlegene/bfanode +# Run this just a single time. +# Docker itself makes sure it autostarts if it crashes or the server reboots. +docker run \ + --detach \ + --restart=unless-stopped \ + --memory 4g \ + $mounts \ + -p 8545:8545 \ + -p 8546:8546 \ + -p 30303:30303 \ + --name ${name} \ + rlegene/bfanode:${tag}