admin

docker-compose 安装emqx

admin docker技术 2025-05-20 590浏览 0

1. 创建项目目录结构

mkdir emqx-docker && cd emqx-docker

mkdir -p {data,logs,config}

2. 创建 docker-compose.yml

version: '3.8'

services:

  emqx:

    image: emqx/emqx:5.5.0

    container_name: emqx

    restart: unless-stopped

    ports:

      - "1883:1883"       # MQTT TCP

      - "8083:8083"       # MQTT WebSocket

      - "8084:8084"       # MQTT/SSL

      - "8883:8883"       # MQTT/TLS

      - "18083:18083"     # Dashboard

    volumes:

      - ./data:/opt/emqx/data

      - ./logs:/opt/emqx/log

    environment:

      - EMQX_DASHBOARD__DEFAULT_USERNAME=admin

      - EMQX_DASHBOARD__DEFAULT_PASSWORD=public

      - EMQX_NODE_NAME=emqx@node1

      - EMQX_CLUSTER__DISCOVERY_STRATEGY=static

    networks:

      - emqx-net


networks:

  emqx-net:

    driver: bridge

3. 自定义配置(可选)

在 config/emqx.conf 中添加自定义配置(以下为示例):

# 监听器配置

listeners.tcp.default {

  bind = "0.0.0.0:1883"

  max_connections = 102400

}


# Dashboard 安全配置

dashboard {

  listeners.http {

    bind = 18083

  }

}

4. 启动服务

docker-compose up -d


如果启动出现权限问题:

有三种方式

(1)给予目录777权限(不推荐)

(2)授权目录1001用户和组(chown 1001:1001 ./data )

  (3) docker-compose 的yml文件中添加root用户操作参数,打开yml文件添加:

user:root


image.png

5. 验证安装

方法 1:访问 Dashboard

浏览器访问 http://宿主机IP:18083,使用:


用户名:admin

密码:public


方法 2:MQTT 客户端测试

bashbash复制markdown复制# 发布消息(使用 mosquitto 客户端)

docker run --rm -it --network emqx-docker_emqx-net eclipse-mosquitto \

  mosquitto_pub -h emqx -t "test" -m "Hello EMQX"


# 订阅消息

docker run --rm -it --network emqx-docker_emqx-net eclipse-mosquitto \

  mosquitto_sub -h emqx -t "test"


6. 关键配置说明


image.png

7. 生产环境建议

安全加固

environment:

  - EMQX_DASHBOARD__DEFAULT_PASSWORD=your_strong_password

  - EMQX_LISTENERS__SSL__DEFAULT__ENABLED=true

  - EMQX_LISTENERS__WSS__DEFAULT__ENABLED=true

集群部署示例

services:

  emqx1:

    image: emqx/emqx:5.5.0

    environment:

      - EMQX_NODE_NAME=emqx@node1

      - EMQX_CLUSTER__DISCOSTRATEGY=static

      - EMQX_CLUSTER__STATIC__SEEDS=emqx@node1,emqx@node2


  emqx2:

    image: emqx/emqx:5.5.0

    environment:

      - EMQX_NODE_NAME=emqx@node2

      - EMQX_CLUSTER__DISCOSTRATEGY=static

      - EMQX_CLUSTER__STATIC__SEEDS=emqx@node1,emqx@node2


8. 常见问题解决

问题 1:Dashboard 无法访问


检查端口映射:18083:18083

查看日志:docker logs emqx


问题 2:MQTT 连接失败

bashbash复制bash复制# 检查监听器状态

docker exec emqx emqx_ctl listeners

问题 3:节点无法加入集群


确保节点名称格式正确:name@hostname

检查网络连通性:docker network inspect emqx-net



完整项目结构

emqx-docker/

├── docker-compose.yml

├── config/

│   └── emqx.conf

├── data/

├── logs/

└── README.md

该方案提供了开箱即用的 EMQX 部署,支持快速扩展为生产级 MQTT 集群。建议根据实际业务需求调整资源配置和安全策略。


版权声明

本站《作品展示》类文章均为原创,转载必须注明出处,技术分享类文章部分来源于网络,版权归原作者所有,若侵权请留言。