此方案用于IOT方案
esp32 使用 MQTT 协议 上传数据到 rabbitmq , 使用NodeRed订阅topic ,将数据插入到数据库中实现持久化。
version: '3'
services:
rabbitmq:
build: ./rabbitMq
#image: rabbitmq:3-management # 使用包含管理界面的RabbitMQ镜像
container_name: rabbitmq
environment:
RABBITMQ_DEFAULT_USER: "martin" # 定义RabbitMQ的默认用户
RABBITMQ_DEFAULT_PASS: "martin123" # 定义RabbitMQ的默认密码
ports:
- "5672:5672" # 映射AMQP端口
- "15672:15672" # 映射管理界面端口
- "1883:1883"
networks:
- node-network
nodered:
image: nodered/node-red # 使用官方Node-RED镜像
container_name: nodered
environment:
NODE_RED_ENABLE_PROJECTS: "true" # 启用Node-RED的项目功能
#volumes:
# - ./nodered-data:/data # 映射Node-RED的数据卷
ports:
- "1880:1880" # 映射Node-RED的HTTP端口
depends_on:
- rabbitmq
networks:
- node-network
networks:
node-network:
driver: bridge
#sudo docker compose -f IotService.yml up
#rabbitmq-plugins enable rabbitmq_mqtt
rabbitMq默认关闭MQTT协议,使用dockerfile的形式去创建容器。
Dockerfile文件内容如下
from rabbitmq:3-management
# 启用mqtt扩展
RUN rabbitmq-plugins enable rabbitmq_mqtt