From 6efbaa4b6121c94eafe1cad9f44f48fb9f284a56 Mon Sep 17 00:00:00 2001 From: Robert Martin-Legene <robert@nic.ar> Date: Fri, 4 Oct 2019 02:11:37 -0300 Subject: [PATCH] Many changes, also to accomodate for the new namespace --- Dockerfile | 21 +++++++------------ bfatoolbase/Dockerfile | 11 ++++++++++ bfatoolbase/README.md | 6 ++++++ bfatoolbase/build.sh | 10 +++++++++ build.sh | 47 ++++++++++++++++++++++++++++-------------- start.sh | 33 +++++++++++++++++++++-------- 6 files changed, 90 insertions(+), 38 deletions(-) create mode 100644 bfatoolbase/Dockerfile create mode 100644 bfatoolbase/README.md create mode 100755 bfatoolbase/build.sh diff --git a/Dockerfile b/Dockerfile index 7bb1717..6cf146f 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,20 +1,15 @@ -FROM ethereum/solc:0.5.10-alpine AS solc -FROM ethereum/client-go:alltools-v1.9.2 +FROM bfaar/nodo:toolbase LABEL maintainer="Robert Martin-Legene <robert@nic.ar>" HEALTHCHECK --start-period=15s CMD [ "/usr/bin/nc", "-z", "-w", "2", "127.0.0.1", "8545" ] CMD [ "/home/bfa/bfa/bin/singlestart.sh" ] -COPY --from=solc /usr/local/bin/solc /usr/local/bin 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 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 BFAHOME=${HOME}/bfa BFANETWORKIDPROD=47525974938 BFANETWORKIDTEST=55555000000 VIRTUALIZATION=DOCKER GITBRANCH=__GITBRANCH__ +ENV BFANETWORKDIRPROD=${BFAHOME}/network BFANETWORKDIRTEST=${BFAHOME}/test2network PATH=${BFAHOME}/bin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin +ENV BFANETWORKID=__BFANETWORKID__ BFANETWORKDIR=__BFANETWORKDIR__ GITBRANCH=__GITBRANCH__ ENV BFANODEDIR=${BFANETWORKDIR}/node BFATOML=${BFANETWORKDIR}/config.toml -RUN mkdir -p ${BFANODEDIR} && ln -s ${BFANODEDIR} .ethereum +RUN mkdir ${BFANODEDIR} && ln -s ${BFANODEDIR} ${HOME}/.ethereum +USER ${USERNAME} WORKDIR ${BFAHOME} -RUN git pull && git checkout ipc -VOLUME [ "/home/bfa" ] +RUN git checkout ${GITBRANCH} && git pull +#VOLUME [ "/home/bfa" ] diff --git a/bfatoolbase/Dockerfile b/bfatoolbase/Dockerfile new file mode 100644 index 0000000..83f5c08 --- /dev/null +++ b/bfatoolbase/Dockerfile @@ -0,0 +1,11 @@ +FROM ethereum/solc:0.5.10-alpine AS solc +FROM ethereum/client-go:alltools-v1.9.2 +LABEL maintainer="Robert Martin-Legene <robert@nic.ar>" +CMD [ "/bin/bash" ] +COPY --from=solc /usr/local/bin/solc /usr/local/bin +EXPOSE 8545 8546 30303 +ENV USERNAME=bfa HOME=/home/bfa BFAHOME=/home/bfa/bfa BFANETWORKIDPROD=47525974938 BFANETWORKIDTEST=55555000000 VIRTUALIZATION=DOCKER BFANETWORKDIRPROD=/home/bfa/bfa/network BFANETWORKDIRTEST=/home/bfa/bfa/test2network PATH=/home/bfa/bfa/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 curl && find /var/cache/apk -type f -delete +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 diff --git a/bfatoolbase/README.md b/bfatoolbase/README.md new file mode 100644 index 0000000..57a02f4 --- /dev/null +++ b/bfatoolbase/README.md @@ -0,0 +1,6 @@ +# toolbase + +Este container paquete contiene herramientas que son muy paracidos +para la `bfaar/nodo:latest` y `bfaar/nodo:test` + +Probablemente no tenes que usarlo directamente, ni pensar que existe. diff --git a/bfatoolbase/build.sh b/bfatoolbase/build.sh new file mode 100755 index 0000000..056829f --- /dev/null +++ b/bfatoolbase/build.sh @@ -0,0 +1,10 @@ +#!/bin/bash +# 20190829 Robert Martin-Legene + +trap "exit 1" ERR +TAG=toolbase +docker build --no-cache -t bfaar/nodo:${TAG} . +read -p 'Upload? : ' -n 1 +echo +test "$REPLY" = "y" || exit 0 +docker push bfaar/nodo:${TAG} diff --git a/build.sh b/build.sh index 857be34..2a1aa0e 100755 --- a/build.sh +++ b/build.sh @@ -1,27 +1,42 @@ #!/bin/bash # 20190829 Robert Martin-Legene # This builds the docker bfanode on a Debian host system. -# If on another distribution, maybe you need to find docker-squash with pip3 trap "exit 1" ERR -TAG=latest -DOCKERFILENAME=Dockerfile -if [ "$1" == "test" ] -then - TAG=test - DOCKERFILENAME=Dockerfile-${TAG} - sed 's/BFANETWORKID=..BFANETWORKIDPROD. BFANETWORKDIR=..BFANETWORKDIRPROD./BFANETWORKID=${BFANETWORKIDTEST} BFANETWORKDIR=${BFANETWORKDIRTEST}/' < Dockerfile > ${DOCKERFILENAME} -fi -docker build -f ${DOCKERFILENAME} -t bfanode:${TAG} . -rm -f Dockerfile-test || true -docker tag bfanode:${TAG} rlegene/bfanode:${TAG} +OK=0 +TAG="$1" +while [ "$OK" = "0" ] +do + case "$TAG" in + "latest") + DOCKERFILENAME=Dockerfile-${TAG} + sed ' + s/BFANETWORKID=__BFANETWORKID__/BFANETWORKID=$BFANETWORKIDPROD/; + s/BFANETWORKDIR=__BFANETWORKDIR__/BFANETWORKDIR=$BFANETWORKDIRPROD/; + s/GITBRANCH=__GITBRANCH__/GITBRANCH=master/ + ' < Dockerfile > ${DOCKERFILENAME} + OK=1 + ;; + "test") + DOCKERFILENAME=Dockerfile-${TAG} + sed ' + s/BFANETWORKID=__BFANETWORKID__/BFANETWORKID=$BFANETWORKIDTEST/; + s/BFANETWORKDIR=__BFANETWORKDIR__/BFANETWORKDIR=$BFANETWORKDIRTEST/; + s/GITBRANCH=__GITBRANCH__/GITBRANCH=dev/ + ' < Dockerfile > ${DOCKERFILENAME} + OK=1 + ;; + *) + read -p 'Build which tag (latest/test)? : ' TAG + ;; + esac +done +docker build --no-cache -f ${DOCKERFILENAME} -t bfaar/nodo:${TAG} . +rm Dockerfile-${TAG} if [ "$USER" = "robert" ] then read -p 'Upload? : ' -n 1 echo test "$REPLY" = "y" || exit 0 - docker push rlegene/bfanode:${TAG} || ( echo "Did you remember to log in using 'docker login'?" ; false ) - ## Some day maybe we will have our own working registry. - #docker tag bfanode:${TAG} registry.gitlab.bfa.ar:5005/blockchain/bfanode:${TAG} - #docker push registry.gitlab.bfa.ar:5005/blockchain/bfanode:${TAG} || ( echo "Did you remember to log in using 'docker login'?" ; false ) + docker push bfaar/nodo:${TAG} || ( echo "Did you remember to log in using 'docker login'?" ; false ) fi diff --git a/start.sh b/start.sh index 2cdde48..78747e7 100755 --- a/start.sh +++ b/start.sh @@ -12,25 +12,40 @@ if [ "$1" = "test" ] then tag="test" class="test" - name="bfanodotest" + name="bfaarnodotest" netdir="test2network" -else +elif [ "$1" = "latest" ] +then tag="latest" class="prod" - name="bfanodo" + name="bfaarnodo" netdir="network" +else + echo Argument 1 must be either latest or test. >&2 + exit 1 fi -vd="${HOME}/dockers/volumes/${name},home,bfa,bfa,${netdir},node,geth" -mkdir -p "${vd}" -mounts="-v ${vd}:/home/bfa/bfa/${netdir}/node/geth" +mounts= +for guestdir in /home/bfa/bfa/${netdir}/node /home/bfa/bfa/${netdir}/cache +do + # docker dirs + d_dirs="${d_dirs} ${guestdir}" + # guestdirs + g_dir=${guestdir//\//,} + g_dirs="${g_dirs} ${g_dir}" + # hostdirs + h_dir=${HOME}/dockers/volumes/${name}${guestdir//\//,} + h_dirs="${h_dirs} ${h_dir}" + mkdir -p ${h_dir} + mounts="${mounts} -v ${h_dir}:${guestdir}" +done if [ "$UID" = "0" ] then - chown -R 30303:30303 ${vd} + chown -R 30303:30303 ${h_dirs} else # This is a bit slower, but works - docker run --rm $mounts -u root alpine chown -R 30303:30303 /home/bfa/bfa/${netdir} + docker run --rm $mounts -u root alpine chown -R 30303:30303 ${d_dirs} fi # Run this just a single time. @@ -44,4 +59,4 @@ docker run \ -p 8546:8546 \ -p 30303:30303 \ --name ${name} \ - rlegene/bfanode:${tag} + bfaar/nodo:${tag} -- GitLab