Desplegando ThingsBoard con Docker
Ejercicios Simples para conocer el potencial de Docker Compose
¡El café, la fotografía, el manga, los cómics y la tecnología son mis grandes pasiones!
Magíster en Ingeniería de Sistemas y Computación. Actualmente, instructor de la Facultad de Ingeniería de la Universidad de los Andes.
¿Qué es ThingsBoard?
ThingsBoard es una plataforma IoT de código abierto que permite el desarrollo, gestión y escalado rápido de proyectos IoT. ThingsBoard proporciona una solución IoT lista para usar, ya sea en la nube o en instalaciones locales, que permita la infraestructura del lado del servidor para tus aplicaciones IoT.

ThingsBoard solo es una plataforma de IoT con la que vamos a explorar el potencial de Docker para distribuir y ejecutar aplicaciones en ambientes de nube y on-premises.
Desplegando ThingsBoard con Docker
En su terminal, clone el repositorio que se muestra a continuación:
$ git clone https://github.com/jpadillaa/docker-compose-example
$ cd docker-compose-example
Este repositorio solo contiene un archivo con una especificación de Docker Compose.
version: '3.0'
services:
mytb:
restart: always
image: "thingsboard/tb-postgres"
ports:
- "8080:9090"
- "1883:1883"
- "7070:7070"
- "5683-5688:5683-5688/udp"
environment:
TB_QUEUE_TYPE: in-memory
volumes:
- ~/.mytb-data:/data
- ~/.mytb-logs:/var/log/thingsboard
Docker Compose es una herramienta que permite definir y gestionar aplicaciones multi-contenedor de forma declarativa. Con Docker Compose, puede describir toda la configuración de sus servicios, como imágenes, volúmenes y variables de entorno, en un archivo único. Esto simplifica la creación, ejecución y administración de aplicaciones complejas que requieren múltiples contenedores interconectados.
Docker Compose facilita la coordinación y orquestación de estos contenedores, permitiéndote definir redes y volúmenes compartidos, así como configurar interacciones entre servicios, todo en un entorno simple y coherente.
La estructura básica de un archivo docker-compose.yml consta de varias secciones que definen cómo se deben ejecutar los servicios en Docker Compose. Aquí hay una breve descripción de cada sección:
Version: Especifica la versión de Docker Compose que se utilizará en el archivo.
Services: Define los servicios que compondrán tu aplicación. Cada servicio representa un contenedor individual y se configura con propiedades como imagen, puertos expuestos, variables de entorno, etc.
Networks: Define las redes a las que se conectarán los servicios. Esto permite la comunicación entre contenedores en diferentes servicios.
Volumes: Opcionalmente, puedes definir volúmenes para persistir datos entre contenedores o mantenerlos fuera de los contenedores.
Environments/Environment: Define las variables de entorno que se pasarán a los contenedores.
Build: Si se requiere, puedes especificar cómo construir imágenes personalizadas a partir de Dockerfiles.
Ports: Define el mapeo de puertos entre el host y los contenedores.
Depends_on: Indica el orden en que se deben iniciar los servicios.
A continuación, vamos a automatizar todo el proceso de despliegue mediante el uso de Docker Compose. Antes de iniciar los contenedores Docker, ejecute los siguientes comandos para crear directorios para el almacenamiento de datos y registros. Estos comandos también cambiarán la propiedad de los directorios recién creados al usuario del contenedor Docker.
El comando chown se utiliza para cambiar el propietario de los directorios, y requiere permisos de sudo.
$ mkdir -p ~/.mytb-data && sudo chown -R 799:799 ~/.mytb-data
$ mkdir -p ~/.mytb-logs && sudo chown -R 799:799 ~/.mytb-logs
Para aprovisionar, ejecute los siguientes comandos para iniciar este Docker Compose directamente:
$ docker compose up -d
$ docker compose logs -f mytb
Después de ejecutar este comando, puedes abrir el navegador en la URL http://{direccion-ip-del-host}:8080. Debería ver la página de inicio de sesión de ThingsBoard. Usa las siguientes credenciales predeterminadas:
Administrador del Sistema:
sysadmin@thingsboard.org/sysadminAdministrador del Inquilino:
tenant@thingsboard.org/tenantUsuario del Cliente:
customer@thingsboard.org/customer
Para apagar la aplicación y los contenedores, ejecute el comando:
$ docker compose down