本来目标是用官方文档编译部署,各种依赖缺失,最后deepseek建议我用docker安装。!!!!

1、windows本地安装

  1. 获取镜像

    docker pull eclipse-mosquitto

    本地使用梯子

  2. 运行镜像

本地配置账号密码,有文件权限问题,故采用无密码模式

docker run -d --name mosquitto -p 1883:1883  -v D:/docker-data/mosquitto/data:/mosquitto/data -v D:/docker-data/mosquitto/log:/mosquitto/log --restart=always eclipse-mosquitto

2、服务器安装

  • 在windows本地导出镜像

    docker save -o mosquitto.tar eclipse-mosquitto

  • 在服务器上导入镜像

    docker load -i mosquitto.tar
  • 编写 Mosquitto 配置文件

# 创建配置目录
mkdir -p /opt/apps/mosquitto/{config,data,log}

# 创建配置文件
cat > /opt/apps/mosquitto/config/mosquitto.conf << 'EOF'
# 基本监听端口
listener 1883 0.0.0.0
listener 9001 0.0.0.0
protocol websockets

# 安全设置 - 禁止匿名访问
allow_anonymous false

# 密码文件
password_file /mosquitto/config/passwd

# 持久化
persistence true
persistence_location /mosquitto/data/

# 日志
log_dest file /mosquitto/log/mosquitto.log
log_timestamp true

# 性能优化
max_connections -1
max_queued_messages 1000
autosave_interval 900
EOF
  • 启动 Mosquitto 容器

docker run -d --name mosquitto -p 10004:1883 -v /opt/apps/mosquitto/config:/mosquitto/config -v /opt/apps/mosquitto/data:/mosquitto/data -v /opt/apps/mosquitto/log:/mosquitto/log --restart=always eclipse-mosquitto
  • 启用密码认证

# 进入容器执行密码生成命令(-c 表示创建新文件,仅第一次使用)
docker exec -it mosquitto mosquitto_passwd -c /mosquitto/conf/passwd mqtt_user
# 按提示输入密码(如 123456),重复确认
  • MQTT 服务测试验证

# 非加密端口订阅(带密码)
docker exec -it mosquitto mosquitto_sub -h localhost -p 1883 -t "test/topic" -u mqtt_user -P 123456

# 非加密端口发布消息(带密码)
docker exec -it mosquitto mosquitto_pub -h localhost -p 1883 -t "test/topic" -u mqtt_user -P 123456 -m "Hello MQTT from Docker!"


验证的时候应该故意测试错误密码常见是否正常
  • 可能用到的常见命令

删除
docker rm mosquitto
启动
docker start mosquitto
停止
docker stop mosquitto
查看日志

docker logs -f mosquitto

更多推荐