Un stack de automatización de cuatro contenedores en una sola Raspberry Pi
Una sola puerta de entrada — Nginx
Arranque ordenado con healthchecks
Secretos y estado fuera de las imágenes
Un fragmento de la implementación
Tal cual del ejemplo desplegado en el Raspberry Pi (Docker) — cópialo libremente:
services:
# ---- Reverse proxy: the only container exposed to the outside --------------
nginx:
image: nginx:stable-alpine
container_name: irrigation-nginx
restart: unless-stopped
ports:
- "80:80" # only port published on the Raspberry Pi
volumes:
- ./nginx/default.conf:/etc/nginx/conf.d/default.conf:ro
- laravel_public:/var/www/html/public:ro
depends_on:
- laravel
- nodered
networks: [irrigation]
# ---- Laravel frontend (multi-company login, alarm history) -----------------
laravel:
build: ./laravel # Dockerfile with php-fpm + composer
container_name: irrigation-laravel
restart: unless-stopped
environment:
APP_ENV: production
DB_HOST: mysql
DB_DATABASE: irrigation
DB_USERNAME: irrigation
DB_PASSWORD: ${MYSQL_PASSWORD}
volumes:
- laravel_public:/var/www/html/publicEl ejemplo completo es un programa entero — cabecera de conexionado, setup y bucle principal — listo para adaptar a tu aplicación.
Preguntas frecuentes
¿Tiene una Raspberry Pi potencia suficiente para cuatro contenedores?
De sobra, en una Pi 4 con 4 GB. Node-RED y MySQL son los únicos consumidores relevantes; Nginx y PHP-FPM se quedan en unas pocas decenas de megabytes en reposo. Usa un sistema operativo de 64 bits y una tarjeta SD de calidad o un SSD para el volumen de MySQL.
¿Cómo actualizo un servicio sin tocar el resto?
docker compose pull nodered seguido de docker compose up -d nodered recrea solo ese contenedor. Los flujos, las credenciales y los nodos instalados de la paleta viven en el volumen nodered_data, así que sobreviven a la actualización.
¿Por qué fijar la zona horaria en el contenedor de Node-RED?
Los programadores de riego se disparan en hora civil local, mañana y tarde. Sin TZ=Europe/Madrid el contenedor funciona en UTC y los ciclos se desplazan una o dos horas según el horario de verano — regando a la hora equivocada del día.