docker-compose自部署:EMQX设置MQTT

bilibili-视频演示

点击本文字,打开哔哩哔哩APP

NO.1
EMQX

Github地址

https://github.com/emqx/emqx

官网文档

https://www.emqx.io/docs/zh/v5.0/deploy/install-docker.html

dockerHub地址

https://hub.docker.com/r/emqx/emqx

EMQX 是最具扩展性的开源 MQTT 代理,具有高性能,可在 1 个集群中连接超过 1 亿个物联网设备,同时保持每秒 1M 消息的吞吐量和亚毫秒级延迟。

EMQX 支持 MQTT、HTTP、QUIC、WebSocket 等多种开放标准协议。它 100% 符合 MQTT 5.0 和 3.x 标准,并通过 TLS/SSL 和各种身份验证机制确保与 MQTT 的双向通信。

EMQX内置强大的基于 SQL 的规则引擎,可以实时提取、过滤、丰富和转换物联网数据。此外,它通过无主分布式架构确保高可用性和水平扩展性,并提供操作友好的用户体验和出色的可观察性。

img

NO.2
服务部署

新建一个文件夹用于放置emqx相关数据

mkdir emqx

img

进入emqx文件夹

img

新建docker-compose.yml文件

nano docker-compose.yml

img

docker-compose.yml文件

version: '3.5'services:  emqx:    image: emqx/emqx:5.0.21    container_name: emqx    ports:      - 18083:18083      - 1883:1883      - 8083:8083      - 8081:8081    volumes:      - ./data:/opt/emqx/data      - ./log:/opt/emqx/log    restart: always

img

官方的文档描述

如果要持久化 EMQX docker 容器,需要保留以下目录:

  • /opt/emqx/data

  • /opt/emqx/etc

  • /opt/emqx/log

启动docker

docker-compose up

img

提示没有权限

img

给data文件夹和其子文件夹设置777最高权限

sudo chmod 777 -R data/

img

重新启动

启动成功

img

开放端口

也就是把你docker映射到主机端口都开放

但如果是正式环境,使用nginx代理后,就不要随意开放端口

sudo ufw allow 18083sudo ufw allow 1883sudo ufw allow 8083sudo ufw allow 8081

img

使其在终端后台启动

常驻进程,保持服务

docker-compose up -d

img

NO.3
使用emqx

访问ip:端口

18083为emqx的管理后台端口

192.168.1.33:18083

img

默认账户:admin

默认密码:public

第一次登录后会提示修改密码

修改密码后进去主页面

按照图示,可以修改界面语言为中文

点击Apply(应用)

img

点击左下角底部图标,可展开或者收缩菜单栏

img

NO.4
客户端测试

本文使用MQTTX

官网地址

https://mqttx.app/

下载win文件安装即可

img

在功能配置-监听器中有默认设置

1883为无需证书的MQTT端口

img

打开MQTTX客户端

创建连接

img

填写name

ip改为部署emqx的ip地址,如本文的192.168.1.33

点击右上角connect

img

提示连接成功

img

同时在管理后台-连接管理

可以看到连接内容

img

在MQTTX客户端添加当前连接的订阅主题

点击添加订阅,填写名称,点击确认

img

可以看到创建了一个订阅

img

回到管理后台-订阅管理

可以看到多了一个test的订阅主题

img

NO.5
Tips

至此,EMQX的MQTT部署和测试完成

写完本篇才发现之前已经写过一篇,基本内容没区别

Docker Compose部署开源免费EMQX MQTT服务 用于Home Assistant MQTT通信

不过这篇文章是对应录制视频演示的稿件,主要还是以视频为主,流程更清晰一些

END.