1.使用docker Desktop下载 eclipse-mosquitto 镜像
屏幕截图 2023-06-23 232433.png
2.直接run,通过拿到container Id 拿到内部默认的配置文件
屏幕截图 2023-06-23 232732.png
屏幕截图 2023-06-23 232814.png
- 执行
docker cp containerId:/mosquitto/config/mosquitto.conf mosquitto.conf
拷贝出容器内部默认配置文件
- 后续我们可以基于默认文件定制自己的mqtt服务器
3.根据eclipse-mosquitto配置文件调整配置
listener 1883
persistence true
persistence_file mosquitto.db
persistence_location /mosquitto/data/
allow_anonymous false
password_file /mosquitto/pwfile
acl_file /mosquitto/aclfile
4. 编写docker-compose
version: "3.7"
services:
eclipse-mosquitto:
image: eclipse-mosquitto
ports:
- 1883:1883
- 9001:9001
volumes:
- ./mosquitto/config/mosquitto.conf:/mosquitto/config/mosquitto.conf
- ./mosquitto/data:/mosquitto/data
- ./mosquitto/log:/mosquitto/log
- ./mosquitto:/mosquitto
5.使用mosquitto_passwd生成加密后的密码
user2:$7$101$DM933TUCDUL0c5yd$6zXRZXqd/R6rlkW7Bgaeekwt1tFJt7vYWoGzUu3R/lew6fbFEzslCcDQwIbaCsCH9Bl8WlW51mwoVgCjCskz2Q==
user1:$7$101$CjvhuhWpQrQVX66z$+ylA0j1A0HbVyP1IxI6nepVpcc/0naf4WTxzEUG4/eLVVydT046/gDzUCAsFWaJ5gUENMcHBrsihQ1p0rOX93Q==
- 执行
mosquitto_passwd -c pwfile username
这会要求输入密码,并经过计算生成一个加密串存入pwfile
- 这里生成了两个测试用户
user1
和user2
,密码都是123456
6.编写aclfile
作为权限控制
user user1
topic read test/#
topic read $SYS/#
user user2
topic write test/#
topic read $SYS/#
7.启动自己的eclipse-mosquitto
服务
- 最终目录结构
- 执行
docker-compose up
即可启动
8.验证
- 使用客户端连接到自己的
eclipse-mosquitto
服务,密码123456
- user1订阅
test/#
,user2向test/1
主题发送消息,user1可以收到,说明验证成功