linux使用docker部署EMQX服务
linux使用docker部署EMQX服务,以及mysql认证
·
linux使用docker部署EMQX服务
目录
1、拉取镜像
docker pull emqx/emqx:5.8.3
2、创建挂载目录
mkdir -p /opt/develop/docker/emqx/{data,etc,log}
3、启动容器,复制文件
# 启动容器
docker run -d --name emqx -p 17770:18083 -p 17771:1883 emqx/emqx:5.8.3
# 拷贝文件
docker cp emqx:/opt/emqx/etc /opt/develop/docker/emqx
docker cp emqx:/opt/emqx/data /opt/develop/docker/emqx
# 给文件赋权
chmod -R 777 /opt/develop/docker/emqx
# 删除容器
docker rm -f emqx
4、运行容器
docker run方式
# docker run
docker run -d --name emqx \
-p 18083:18083 -p 1883:1883 -p 8883:8883 -p 8083:8083 -p 8084:8084 \
-e TZ=Asia/Shanghai \
-v /opt/develop/docker/emqx/etc:/opt/emqx/etc \
-v /opt/develop/docker/emqx/data:/opt/emqx/data \
-v /opt/develop/docker/emqx/log:/opt/emqx/log \
emqx/emqx:5.8.3
docker compose方式
# docker-compose
# 指定docker-compose文件版本
version: "3"
services:
# 服务名
jyy-emqx:
# 容器名称
container_name: emqx
# 镜像
image: emqx/emqx:5.8.3
# 重启策略
restart: always
# 映射端口
ports:
- "18083:18083"
- "1883:1883"
- "8883:8883"
- "8083:8083"
- "8084:8084"
# 容器内环境配置
environment:
- TZ=Asia/Shanghai
# 挂载目录
volumes:
- /opt/develop/docker/emqx/etc:/opt/emqx/etc
- /opt/develop/docker/emqx/data:/opt/emqx/data
- /opt/develop/docker/emqx/log:/opt/emqx/log
# 网络配置
networks:
- jyy_service_bridge
# 网络配置
hostname: jyy_emqx_host
# 全局网络配置
networks:
# 配置网络名称
jyy_service_bridge:
# 配置方式
driver: bridge
ipam:
config:
- subnet: 192.168.7.0/24
EMQ X端口详情:
端口 | 协议 | 释义 |
---|---|---|
1883 | TCP | MQTT over TCP 监听器端口,主要用于未加密的 MQTT 连接。 |
8883 | TCP | MQTT over SSL/TLS 监听器端口,用于加密的 MQTT 连接。 |
8083 | TCP | MQTT over WebSocket 监听器端口,使 MQTT 能通过 WebSocket 进行通信。 |
8084 | TCP | MQTT over WSS (WebSocket over SSL) 监听器端口,提供加密的 WebSocket 连接。 |
18083 | HTTP | EMQX Dashboard 和 REST API 端口,用于管理控制台和 API 接口。 |
5、新建认证用户
打开EMQ X控制台页面,我的控制台页面访问地址是127.0.0.1:18083,默认账号admin,默认密码public,登录后点击左边菜单,点击 访问控制–>客户端认证–>右上角创建,选择认证方式为Password-Based,选择MySQL或者是其他数据库。
5.1、如果选择mysql,直接执行以下sql,建库建表。
CREATE DATABASE `mqtt_user` CHARACTER SET 'utf8mb4' COLLATE 'utf8mb4_general_ci';
use mqtt_user;
CREATE TABLE IF NOT EXISTS `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 DEFAULT CHARSET=utf8mb4;
5.2、新建认证用户的DML:添加一名用户名为 jyy、密码为 password!、盐值为 ThTntX3rBDcbeauVdZMyTOO_UpcWJg、散列方式为 sha256 且超级用户标志为 true 的用户
INSERT INTO mqtt_user ( username, password_hash, salt, is_superuser )
VALUES
( 'jyy',
SHA2 ( concat( 'password!', 'ThTntX3rBDcbeauVdZMyTOO_UpcWJg==' ), 256 ),
'ThTntX3rBDcbeauVdZMyTOO_UpcWJg==',
1 );
EMQ X官方文档:https://docs.emqx.com/zh/emqx/latest/

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。
更多推荐
所有评论(0)