Docker搭建MQTTServer服务器
概述
- MQTT 是一种基于发布/订阅(Publish/Subscribe)模式的轻量级消息协议, 常用于物联网设备之间的通信.
MQTT 的核心概念
- Broker(服务器): 消息中间人,负责接收和转发消息.
- Client(客户端): 可以是发布者或订阅者.
- Topic(主题): 消息的"频道",订阅者监听某个 Topic,发布者向该 Topic 发送消息.
- QoS(服务质量): 有三种级别,0(最多一次), 1(至少一次), 2(只有一次).
流程
创建项目文件
编辑 mosquitto/mqtt/config/mosquitto.conf文件
编辑 mosquitto/Dockerfile 文件
编辑 mosquitto/build.sh 文件
编辑 docker-compose.yml 文件
编辑 build.sh 文件
运行
touch docker-compose.yml
touch build.sh
chmod a+x build.sh
mkdir -p mosquitto/mqtt/{config,data,log}
cd mosquitto
touch Dockerfile
touch build.sh
chmod a+x build.sh
cd mqtt/config
touch passwd
listener 1883 0.0.0.0
# 配置websocket的连接端口
listener 9001
# 以websocket方式连接mqtt服务
protocol websockets
persistence true
# 数据存储路径
persistence_location /mosquitto/data/
# 运行日志存储路劲
log_dest file /mosquitto/log/mosquitto.log
# 用户文件存储路径
password_file /mosquitto/config/passwd
per_listener_settings false
# 设置匿名访问
allow_anonymous true
FROM eclipse-mosquitto:2.0.21
# 开放 MQTT 端口
EXPOSE 1883
# 开放 WebSocket 端口
EXPOSE 9001
#/bin/bash
set -e
docker build -t eclipse-mosquitto .
services:
mosquitto:
image: eclipse-mosquitto:latest
container_name: eclipse-mosquitto
ports:
- "1883:1883"
- "9001:9001"
volumes:
- ./mosquitto/mqtt/config:/mosquitto/config
- ./mosquitto/mqtt/data:/mosquitto/data
- ./mosquitto/mqtt/log:/mosquitto/log
#/bin/bash
set -e
echo "构建mosquitto容器"
cd ./mosquitto/
chmod +x ./build.sh
./build.sh
cd ..
./build.sh
docker compose up -d
# 进入容器启用用户名密码认证
docker exec -it eclipse-mosquitto sh
# 设置用户名: yhj 密码: 636216
mosquitto_passwd -b /mosquitto/config/passwd yhj 636216
# 退出容器
exit
# 重启服务
docker-compose restart
- 客户端使用 MQTT工具(MQTTX)测试