Docker 容器部署 EMQX|MQTT 消息代理服务安装与配置教程

Docker EMQX 部署和配置指南


文章目录

  • [Docker EMQX 部署和配置指南](#Docker EMQX 部署和配置指南)
  • [一、Docker EMQX部署](#一、Docker EMQX部署)
    • [1.1 构建docker-compose.yml](#1.1 构建docker-compose.yml)
  • 二、参考文档
  • 三、可视化管理后台

一、Docker EMQX部署

1.1 构建docker-compose.yml

1、在项目目录下创建一个名为 docker-compose.yml 的文件,并添加以下内容:

yaml 复制代码
version: '3'
services:
  emqx:
    image: emqx/emqx:4.4.0
    container_name: emqx
    environment:
      - TZ=Asia/Shanghai
      - EMQX_NODE_NAME=emqx@127.0.0.1
      - EMQX_HOST=127.0.0.1
      - EMQX_NAME=emqx_local
    ports:
      - 1883:1883
      - 8083:8083
      - 8084:8084
      - 8883:8883
      - 18083:18083
    volumes:
      - /Users/xiaozhou/DockerContainerData/emqx/etc:/opt/emqx/etc
      - /Users/xiaozhou/DockerContainerData/emqx/data:/opt/emqx/data
      - /Users/xiaozhou/DockerContainerData/emqx/log:/opt/emqx/log

注释版

yaml 复制代码
# docker‑compose 配置文件,用于一键编排启动 EMQX 4.4.0 MQTT消息服务器
version: '3'   # compose文件版本,version3适配Docker1.13.0及以上版本
services:      # 定义需要管理的服务列表
  emqx:        # 服务名称,compose内部标识该服务为emqx
    image: emqx/emqx:4.4.0   # 使用的镜像:emqx4.4.0版本MQTT服务镜像
    container_name: emqx     # 指定容器名称,不指定则compose自动生成名字
    environment:             # 设置容器内环境变量,用于配置emqx运行参数
      - TZ=Asia/Shanghai     # 设置容器时区为上海,解决日志、系统时间时差问题
      - EMQX_NODE_NAME=emqx@127.0.0.1  # EMQX节点名称,集群模式下节点唯一标识,单机使用配置本机地址
      - EMQX_HOST=127.0.0.1            # EMQX服务绑定监听地址
      - EMQX_NAME=emqx_local           # EMQX实例别名标识
    ports:                   # 端口映射:宿主机端口:容器内部端口
      - 1883:1883            # MQTT TCP标准端口,设备普通mqtt连接
      - 8083:8083            # WebSocket MQTT 明文端口,浏览器JS连接mqtt
      - 8084:8084            # WebSocket MQTT SSL加密端口
      - 8883:8883            # MQTT TLS/SSL加密通信端口
      - 18083:18083          # EMQX Dashboard可视化管理后台,浏览器访问: http://宿主机IP:18083
    volumes:                 # 数据卷挂载,宿主机目录映射到容器内部,持久化配置、数据、日志;容器删除数据不会丢失
      - /Users/xiaozhou/DockerContainerData/emqx/etc:/opt/emqx/etc   # 挂载emqx配置目录,可直接在宿主机修改配置文件
      - /Users/xiaozhou/DockerContainerData/emqx/data:/opt/emqx/data # 挂载数据目录,存储客户端会话、订阅、持久化消息数据
      - /Users/xiaozhou/DockerContainerData/emqx/log:/opt/emqx/log  # 挂载日志目录,日志输出到宿主机,方便排查问题

2、创建目录后,设置目录权限,

bash 复制代码
sudo chown -R 1000:1000 /Users/xiaozhou/DockerContainerData/emqx
sudo chmod -R 777 /Users/xiaozhou/DockerContainerData/emqx

3、 进入容器内部并编辑 loaded_plugins 文件

bash 复制代码
echo "emqx_dashboard." >> /opt/emqx/data/loaded_plugins
echo "emqx_management." >> /opt/emqx/data/loaded_plugins

4、在docker-compose.yml的目录通过下方指令删除、重启容器;

bash 复制代码
docker-compose down
docker-compose up -d

二、参考文档

EMQX的docker部署与使用(mqtt):https://blog.csdn.net/qq_19891197/article/details/132864991

编辑/etc/docker/daemon.json

bash 复制代码
{
  "registry-mirrors": [
    "https://2a6bf1988cb6428c877f723ec7530dbc.mirror.swr.myhuaweicloud.com",
    "https://docker.m.daocloud.io",
    "https://hub-mirror.c.163.com",
    "https://mirror.baidubce.com",
    "https://your_preferred_mirror",
    "https://dockerhub.icu",
    "https://docker.registry.cyou",
    "https://docker-cf.registry.cyou",
    "https://dockercf.jsdelivr.fyi",
    "https://docker.jsdelivr.fyi",
    "https://dockertest.jsdelivr.fyi",
    "https://mirror.aliyuncs.com",
    "https://dockerproxy.com",
    "https://mirror.baidubce.com",
    "https://docker.m.daocloud.io",
    "https://docker.nju.edu.cn",
    "https://docker.mirrors.sjtug.sjtu.edu.cn",
    "https://docker.mirrors.ustc.edu.cn",
    "https://mirror.iscas.ac.cn",
    "https://docker.rainbond.cc"
  ]
}

重新加载配置文件

bash 复制代码
sudo systemctl daemon-reload
sudo systemctl restart docker

验证配置是否生效

bash 复制代码
docker info

三、可视化管理后台

访问地址:http://127.0.0.1:18083

  • 用户名:admin
  • 密码:public
相关推荐
其实防守也摸鱼5 小时前
每天一个知识点——RCE漏洞
运维·服务器·数据库·windows·安全·github·漏洞
努力努力再努力wz6 小时前
【Docker 入门系列】:从 Namespace、CGroup 到 LXC:理解容器运行时、rootfs 与 LXC 实战
运维·docker·容器
JavaPub-rodert7 小时前
Docker 多阶段构建:为什么生产环境镜像可以小 90%
运维·docker·容器
2601_962218477 小时前
万象生鲜系统多账套隔离技术适配集团生鲜企业集团化数字化管控
大数据·运维·微服务·云原生·架构
王志来137944730087 小时前
安防监控工控工业服务器配套
运维·服务器·python
hanchenxing7 小时前
自动化脚本“卡住无输出“怎么办: 一次 WebSocket 挂死的排查与自愈模板
运维·javascript·chrome·websocket·自动化·自动化爬虫
吴声子夜歌7 小时前
Shell编程——条件测试与比较
linux·运维·shell
物联网IoT小易8 小时前
物联网设备数据异常怎么处理?重复、乱序、断点续传与脏数据治理
物联网·mqtt·数据治理·时序数据库·物联网设备·物联网设备接入·物联网设备连接
吴声子夜歌8 小时前
Shell编程——函数
linux·运维·shell
PC2005-cloud8 小时前
Qdrant 连接失败排查:localhost 解析到 __1,而 Docker 只绑了 IPv4
运维·docker·容器