Introducción
Antes de iniciar, asumimos que tiene cierta familiaridad y conocimiento de docker, aunque los comandos que vamos a trabajar son fáciles de entender y usar, pueda que en algún momento del post se pueda perder o no entender.
Si necesitas ayuda con los comandos de docker, a continuación dejamos unos links que pueden ayudar a entender docker:
Entrono de trabajo
- Microsoft Windows [Versión 10.0.19044.2846]
- Docker version 20.10.17, build 100c701
- nodered/node-red - Docker Image | Docker Hub
Versiones de contenedores
Para node red y como nos describe la documentación oficial Running under Docker : Node-RED (nodered.org) [1], tiene tres tipos contenedores para diferentes sistemas operativos los cuales son:
latest
Utiliza la imagen base oficial Node.JS v8.slim
Utiliza la imagen base de Alpine Linux.rpi
Utiliza una imagen base compatible con RPi.
El uso de Alpine Linux reduce el tamaño de la imagen integrada (~ 100 MB frente a ~ 700 MB) pero elimina las dependencias estándar que se requieren para la compilación del módulo nativo. Si desea agregar módulos con dependencias nativas, use la imagen estándar o extienda la imagen delgada con los paquetes que faltan.
En este post nos enfocaremos en docker con la imagen oficial, para las otras imágenes tenemos los otros post donde explicamos a detalle.
Versión antigua del repositorio
Esta es la versión antigua del repositorio nodered/node-red-docker - Docker Image | Docker Hub, se las muestro por si tienen un proyecto con esta versión para que lo actualicen a la nueva versión.
Versión nueva del repositorio
A partir de Node-RED 1.0, el repositorio de nodered/node-red - Docker Image | Docker Hub pasó a llamarse .nodered/node-red
Inicio rápido
Iniciemos con algo sencillo y es ejecutar la imagen node-red-docker para crear un nuevo contenedor
, para ello usamos el comando docker run
, veamos el ejemplo:
docker run -d --rm -p 1880:1880 -v node_red_data:/data --name mynodered nodered/node-red
El comando anterior esta realizando lo siguiente:
- docker run: Crea un contenedor docker.
- -d: permite retormar la consola de comandos despues de ejecutar el comenado.
- --rm: Al detener el contenedor, este se eliminara
- -p 1880:1880: Realizamos un mapeo de puetos, y conectamos el puerto interno y externo
- -v node_red_data:/data: creamos un volumen para los datos de node red
- --name mynodered: damos un nombre al contenedor creado
- nodered/node-red: imagen que usara para creaer el contenedor, en este caso sera la versión latest
Al abrir la url http://localhost:1880/ nos debera cargar la siguiente pantalla:
Creando un docker-compose
Para los que conocen docker sabrán existe una herramienta que es docker-compose facilita la creación de la imagens, servicios, gestión de almacenamiento y la red, ademas de adicionar varias imágenes de otros servicios como bases de datos, servidores de red entre otras.
Los pasos que vamos a explicar a continuación se están realizando para windows, como docker es multiplataforma no deberían tener problema con otros sistemas operativos, cualquier error o pregunta me pueden dejar un comentario.
Vamos a crear un paso a paso con docker-compose muy básico, ya que en futuros proyectos vamos a ir adicionando elementos para un proyecto de Internet de las cosas, por el momento solo vamos a tener lo siguiente:
Vamos a crear el siguiente directorio ejemplo-docker-nodered
en la ubicación que mas cómoda le quede, también le pueden colocar el nombre que quieran y dentro crearemos el archivo docker-compose.yml
, en este archivo colocamos las siguientes lineas.
#Paso 1
version: '3'
#Paso 2
services:
#Paso 3
nodered:
build: ./nodered #Paso 4
container_name: 'nodered' #Paso 5
ports: #Paso 6
- '1880:1880'
Dentro del directorio ejemplo-docker-nodered
vamos a crear otra carpeta que llamaremos nodered
, dentro de este directorio crearemos un archivo llamando Dockerfile
el cual adicionaremos lo siguiente:
#Paso 7
FROM nodered/node-red
#Paso 8
RUN npm install node-red-dashboard
Nos debe quedar nuestro proyecto de la siguiente forma.
Expliquemos cada una de las líenas:
- Vamos a usar la versión 3 de docker composer.
- Para este ejercicio solo vamos a crear servicios.
- Creamos el servicio de
nodered
- Para este servicio vamos a indicarle que compile el archivo
Dockerfile
que se encuentra en el directorio nodered. - Damos como nombre
nodered
al contenedor. - Listamos los puertos 1880 para poder visualizar en el navegador la interfaz de node red.
- En el archivo
Dockerfile
le indicamos que usamos la imagen denode-red-docker
. - Instalamos las herramientas y complementos de
node-red-dashboard
para poder usarlo en el navegador.
Ya solo nos queda ejecutar el siguiente comando y se creara la imagen con el contenedor automáticamente.
docker-compose up
Y cada ves que necesitemos iniciar node red ejecutamos el comando anterior.
Ahora si necesitamos que node red quede corriendo cada vez que inicie un servidor, se puede crear el servicio, pero eso lo veremos en otro post que a la fecha lo estoy redactando, cuando este listo lo publicare y lo comentare en las redes sociales.
[1] nodered https://nodered.org/docs/getting-started/docker, Consultado Agosto 2019