From 5547e4dc92488fc456c1b151354669648c2b61d0 Mon Sep 17 00:00:00 2001 From: arocha Date: Tue, 2 Jan 2018 17:41:58 +0100 Subject: [PATCH] Docker support updated --- .gitignore | 1 + Dockerfile | 21 +++++++++++++-------- README.md | 23 +++++++++++++++++++++++ scripts/backup.sh | 2 +- scripts/init.sh | 34 ++++++++++++++++++++++++++++++++-- scripts/start.sh | 8 ++++++++ 6 files changed, 78 insertions(+), 11 deletions(-) diff --git a/.gitignore b/.gitignore index b4ffa27..3251cc3 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,4 @@ scripts/nohup.out scripts/permissioned-nodes.json go1* +data/keys diff --git a/Dockerfile b/Dockerfile index 2386974..c5e6ed0 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,6 +1,11 @@ -FROM ubuntu:xenial +FROM ubuntu:16.04 -LABEL maintainer "Jakub Vanak (https://github.com/Koubek)" +LABEL maintainer "Alfonso de la Rocha (https://github.com/arochaga)" + +ARG hostip +ARG nodetype +ARG nodename +ENV HOST_IP $hostip COPY data /root/alastria-node/data RUN chmod -R u+x /root/alastria-node/data @@ -10,16 +15,16 @@ RUN chmod -R u+x /root/alastria-node/scripts WORKDIR /root/alastria-node/scripts -RUN sed -i -e 's/\r$//' init.sh && sed -i -e 's/\r$//' bootstrap.sh && sed -i -e 's/\r$//' start.sh - RUN \ apt-get update && \ - DEBIAN_FRONTEND=noninteractive apt-get install -q -y curl \ + apt-get install -y curl \ libcurl3 unzip wget git make gcc libsodium-dev build-essential libdb-dev zlib1g-dev libtinfo-dev sysvbanner wrk psmisc sudo -WORKDIR /root/alastria-node/scripts -RUN ./bootstrap.sh +RUN sudo -H ./bootstrap.sh +RUN ./init.sh dockerfile $nodetype $nodename +RUN ./start.sh EXPOSE 9000 21000 21000/udp 22000 41000 -# CMD ["/run.sh"] +RUN ./start.sh +CMD ["./start.sh dockerfile"] diff --git a/README.md b/README.md index 2c29d8a..eaa0561 100644 --- a/README.md +++ b/README.md @@ -143,6 +143,29 @@ Existe un script `./scripts/clean.sh` que limpia el nodo actual y exige una resi del mismo al iniciarlo de nuevo. Esto solventa posibles errores de sincronización. Su efecto es el mismo que el de ejecutar directamente `./scripts/start.sh clean` +## Crear un nodo con Docker +Para generar la imagen de Docker ejecutar: +``` +sudo docker build -t alastria-node . --build-arg hostip= --build-arg nodetype= --build-arg nodename= +``` +Indicando la IP del host donde se ejecuta el nodo, el tipo de nodo a generar (validador o general) y el nombre que queremos dar al nodo, +y ejecutando el comando anterior se genera la imagen para nuestro nodo con el nombre *alastria-node*. + +**NOTA** +Si deseamos generar el nodo utilizando un enode y las claves de un nodo ya existente debemos hacer un backup de las claves +del antiguo nodo: +``` +./backup.sh keys +``` +Esto generará la carpeta ~/alastria-keysBackup- cuyo contenido deberemos moverlo a ~/alastria-node/data/keys. +La claves de este directorio (que tiene que mantener la estructura de carpetas del backup generado) serán las utilizadas +en la imagen del nodo que vamos a generar. + + +Una vez finalizada la generación de la imagen, ejecutamos el nodo en segundo plano: +``` +docker run -d --name alastria -p 9000:9000 -p 21000:21000 -p 22000:22000 -p 41000:41000 alastria-node +```