Docker安装mosquitto

1. 创建mosquitto.conf

vim /data/docker/mosquitto/config/mosquitto.conf 添加以下配置

1
2
3
4
5
6
7
8
listener 1883 0.0.0.0
persistence true
persistence_location /mosquitto/data
log_dest file /mosquitto/log/mosquitto.log
# 不允许匿名访问
allow_anonymous false
#指定密码文件
password_file /mosquitto/config/pwfile.conf

以上的路径代表的是容器中的路径非宿主机

2. 创建pwfile.conf文件

touch /data/docker/mosquitto/config/pwfile.conf,先空白后续再容器中配置用户账号、密码

3. 修改目录权限

这个步骤没有验证过是否一定要配置~

1
2
chmod -R 755 /data/docker/mosquitto
chmod -R 777 /data/docker/mosquitto/log #日志目录要最大权限

4. compose.yaml

1
2
3
4
5
6
7
8
9
10
services:
mosquitto:
image: eclipse-mosquitto
container_name: mosquitto
ports:
- "1883:1883"
volumes:
- "/data/docker/mosquitto/config:/mosquitto/config"
- "/data/docker/mosquitto/data:/mosquitto/data"
- "/data/docker/mosquitto/log:/mosquitto/log"

5. 启动

1
docker compose up -d

6. 配置用户

1
2
3
docker exec -it mosquitto sh
# 执行后按提示输入密码,会把信息添加到pwfile.conf文件,-c参数会覆盖配置文件
mosquitto_passwd -c /mosquitto/config/pwfile.conf chenjie

注: 要向现有密码文件添加更多用户,或者更改现有用户的密码,请省略 -c 参数

1
mosquitto_passwd <password file> <username>

要从密码文件中删除用户:

1
mosquitto_passwd -D <password file> <username>

您还可以在一行中添加/更新用户名和密码,但请注意,这意味着密码在命令行和任何命令历史记录中可见:

1
mosquitto_passwd <password file> <username> <password>

7. 验证

安装MQTT客户端工具:

1
apt install mosquitto-clients

打开两个终端窗口,分别运行:

订阅者:

1
mosquitto_sub -h localhost  -u 用户名 -P 密码 -t test/topic

发布者:

1
mosquitto_pub -h localhost  -u 用户名 -P 密码 -t test/topic -m "Hello MQTT"

如果订阅者收到消息,说明MQTT服务运行正常。

参考文章 Mosquitto Docker Hub Mosquitto Github Mosquitto官网认证配置(配置密码等) Mosquitto文档入口 MQTT Docker安装Mosquitto:从入门到实践 在docker中安装MQTT教程