版本:5.0.26
1、拉取emq
- docker pull emqx/emqx:5.0.26
拉取emq镜像
占用端口: 1883 MQTT/TCP 协议端口 11883 MQTT/TCP 协议内部端口,仅用于本机客户端连接 8883 MQTT/SSL 协议端口 8081 management/HTTP/S 协议端口 8083 MQTT/WS 协议端口 8084 MQTT/WSS 协议端口 |
2、运行emq
-
docker run --name emqx -u root \ -p 1883:1883 -p 8083:8083 \ -p 8084:8081 -p 8085:8084 \ -p 18083:18083 \ -v /usr/local/mqtt/emq/data:/opt/emqx/data \ -v /usr/local/mqtt/emq/log:/opt/emqx/log \ -v /usr/local/mqtt/emq/plugins:/opt/emqx/plugins \ -v /usr/local/mqtt/emq/etc:/opt/emqx/etc \ -e TZ="Asia/Shanghai" \ --restart=always \ -d emqx/emqx:5.0.26
3、拉取配置文件
*注意正常情况下,本地是没有这些配置需要先从容器拷贝出来,执行会报错误(ERROR: emqx.conf is not found in /opt/emqx/etc)
首先,先随便执行一个新容器如下:
docker run --name emqx_test -u root -d emqx/emqx:5.0.26
然后把内容拷贝到宿主机也就是本地
cd /usr/local/mqtt/emqx
docker cp emqx_test:/opt/emqx/plugins ./
docker cp emqx_test:/opt/emqx/log ./
docker cp emqx_test:/opt/emqx/data ./
docker cp emqx_test:/opt/emqx/etc ./
这样在/usr/local/mqtt/emqx下面就包含了默认的配置了
plugins 、log、data、etc
然后再清理掉emqx_test 容器
docker stop emqx_test
docker rm emqx_test
4、执行成功
docker ps
5、访问
默认账号:admin
默认密码:public
默认第一次修改密码,不想修改的先跳过
修改为中文页面
点击应用就行了
6、配置数据库认证
6.1查询docker的ip
在宿主机器上面查询docker地址
Ifconfig
查询出来ip为128.128.0.1
6.2 配置数据库
网页登录emq
客户端认证
创建
选择第一个
选择mysql
填写之前查询到的ip
128.128.0.1
这里我的数据库端口为3306,所以这里填写
首先需要在自己的数据库创建相应的表,如下:
创建mqtt_user表
CREATE TABLE `mqtt_user` (
`id` int(11) unsigned NOT NULL AUTO_INCREMENT,
`username` varchar(100) DEFAULT NULL,
`password_hash` varchar(100) DEFAULT NULL,
`salt` varchar(35) DEFAULT NULL,
`is_superuser` tinyint(1) DEFAULT '0',
`created` datetime DEFAULT NULL,
PRIMARY KEY (`id`),
UNIQUE KEY `mqtt_username` (`username`)
) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=utf8mb4;
填写数据库的连接信息
填写上述数据,点击创建
然后可以在数据库添加账号,然后客户端通过账号密码认证。