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