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
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. 关键配置说明
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 集群。建议根据实际业务需求调整资源配置和安全策略。
转载请注明:梦绘设计 » docker技术 » docker-compose 安装emqx
版权声明
本站《作品展示》类文章均为原创,转载必须注明出处,技术分享类文章部分来源于网络,版权归原作者所有,若侵权请留言。