Dockers es una plataforma de código abierto que automatiza el despliegue de aplicaciones dentro de contenedores de software, proporcionando una capa de abstracción que permite que distintas aplicaciones funcionen en ambientes independientes.
Es factible ejecutar el Nodo de Interoperabilidad de PISEE en un contenedor Docker permitiendo aún más flexibilidad de instalación y uso para poder conectarse a la Red de interoperabilidad PISEE.
Para armar un contenedor es necesario crear un archivo Dockerfile que contiene los comandos necesarios para crear dicho contenedor e indican cómo se ejecuta. La carpeta del Nodo ya incluye un archivo Dockerfile para crear el contenedor.
Un contenedor Docker debe poseer un sistema operativo base donde funcione correctamente el Nodo, el ejecutable del Nodo, los certificados necesarios y el archivo de configuración. Todos estos archivos se encuentran en la carpeta del Nodo.
El Dockerfile incluido en el Nodo ya hace todo esto, monta un sistema operativo Ubuntu 20.04, copia los archivos necesarios, expone el puerto 8084 para los consumos internos y ejecuta el Nodo, por lo tanto no es necesario hacerle cambios al Dockerfile.
|
FROM ubuntu:20.04 WORKDIR /home/Nodo RUN apt-get update && apt-get -y install xmlsec1 COPY . /home/Nodo/ EXPOSE 8084 RUN chmod +x ./NodoV2 CMD ["./NodoV2", "start"] |
Dockerfile de ejemplo
$ sudo docker build -t nodopisee .
[+] Building 3.5s (10/10) FINISHED docker:default
=> [internal] load build definition from Dockerfile 0.0s
=> => transferring dockerfile: 207B 0.0s
=> [internal] load metadata for docker.io/library/ubuntu:20.04 0.5s
=> [internal] load .dockerignore 0.0s
=> => transferring context: 2B 0.0s
=> [internal] load build context 0.0s
=> => transferring context: 3.08kB 0.0s
=> [1/5] FROM docker.io/library/ubuntu:20.04@sha256:8feb4d8ca5354def3d8fce243717141ce31e2c428701f6682bd2fafe15388214 0.0s
=> CACHED [2/5] WORKDIR /home/Nodo 0.0s
=> CACHED [3/5] RUN apt-get update && apt-get -y install xmlsec1 0.0s
=> [4/5] COPY . /home/Nodo/ 0.4s
=> [5/5] RUN chmod +x ./NodoV2 0.7s
=> exporting to image 1.8s
=> => exporting layers 1.7s
=> => writing image sha256:5d1b7d504c810a1c5d359677d2ad7b544ac4108dc04969b0a05d0b16e1281162 0.0s
Este comando crea el contenedor, no es necesario volver a ejecutarlo a menos que se hagan cambios en el nodo o en su configuración.
Cuando ya esté creada la imagen del contenedor, con el nombre “nodopisee” ahora será posible ejecutarlo.
sudo docker run -p 8084:8084 nodopisee
Esto pondrá en ejecución el Nodo y estará listo para su uso.
Si quiere dejar el Nodo funcionando de forma permanente en modo background necesita agregar el parámetro -d
sudo docker run -d -p 8084:8084 nodopisee
En los ejemplos anteriores se habilitó el puerto 8084 para que el Nodo reciba consultas del cliente, pero si se quisiera cambiar de puerto o si se quiere abrir el puerto que escucha a otros OAEs se deben realizar los siguientes cambios:
Modifique el Dockerfile indicando el puerto que se desea abrir (en este ejemplo abriremos el puerto 8489 para recibir mensajes de otros OAEs)
|
FROM ubuntu:20.04 WORKDIR /home/Nodo RUN apt-get update && apt-get -y install xmlsec1 COPY . /home/Nodo/ EXPOSE 8084 RUN chmod +x ./NodoV2 CMD ["./NodoV2", "start"] |
Dockerfile de ejemplo
Vuelva a crear el contenedor: sudo docker build -t nodopisee .
Ejecute la imagen docker indicando el puerto que se debe habilitar:
sudo docker run -d -p 8084:8084 -p 8489:8489 nodopisee
Y con eso el Nodo estará habilitado para recibir mensajes en el puerto 8489
Para entrar al contenedor en ejecución necesita ver los contenedores que están en ejecución en docker .
sudo docker ps
CONTAINER ID IMAGE COMMAND CREATED
6498bfed5f05 nodopisee "./NodoV2 start" 3 minutes ago
Esto listará todos los contenedores en ejecución y podrá ver su ID.
Con el ID ya se puede llamar al comando para entrar al contenedor:
sudo docker exec -it 6498bfed5f05 /bin/sh
El prompt cambiará y normalmente verá algo como:
root@6498bfed5f05:/home/Nodo#
Ya está dentro del contenedor y puede realizar las acciones que necesite.
Para salir presione CTL+a+d