diff --git a/Dockerfile b/Dockerfile index 7bb17175b03b9dd9cd65ccfeabbfd37eac3f959d..6cf146f4076834cb90ca2b0122fe62ce4c5a0375 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 0000000000000000000000000000000000000000..83f5c081ce073cf33eccf3518f72a851ec4e9840 --- /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 0000000000000000000000000000000000000000..57a02f46d9d6b6b22b5c3d0ff802e12dddf38926 --- /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 0000000000000000000000000000000000000000..056829fdd54b890b6350a63af5a1a577a944adba --- /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 857be342aa15b1a74cf2bc80b354a8b317437f2f..2a1aa0edceb4e6acd31a1157d89292923c420f08 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 2cdde4832f4cf421243296db5bd3a86897e826ae..78747e71aa4da6339200ce834ebad31cdfddad29 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}