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/

Logo

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

更多推荐