Instalar node red en docker


En este post vamos a instalar node-red en docker para crear nuestros proyectos de conexión de hardware

oscar Escrito por oscar 07 August 2019 6510 0

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

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
Docker 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:

Web de node red

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.

Directorios
Directorios

Expliquemos cada una de las líenas:

  1. Vamos a usar la versión 3 de docker composer.
  2. Para este ejercicio solo vamos a crear servicios.
  3. Creamos el servicio de nodered
  4. Para este servicio vamos a indicarle que compile el archivo Dockerfile que se encuentra en el directorio nodered.
  5. Damos como nombre nodered al contenedor.
  6. Listamos los puertos 1880 para poder visualizar en el navegador la interfaz de node red.
  7. En el archivo Dockerfile le indicamos que usamos la imagen de node-red-docker.
  8. 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.

Crear contenedor
Crear contenedor
Url del contenedor
Url del contenedor

 

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


Comentario

Debe aceptar antes de enviar