基于docker的emqx,数据持久化,防止重启配置丢失
emqx 4及以下版本
docker中运行的emqx,采用在內置账号、密码进行身份认证的情况下,如果容器重启,那么上述配置将丢失。
一下操作基于emqx 4.4.19
1、先运行emqx docker容器
docker run -d --name emqx emqx/emqx:4.4.19
2、将容器中的emqx的配置copy到本地:
docker cp emqx:/opt/emqx/etc /...本地目录.../emqx docker cp emqx:/opt/emqx/lib /...本地目录.../emqx docker cp emqx:/opt/emqx/data /...本地目录.../emqx docker cp emqx:/opt/emqx/log /...本地目录.../emqx
3、设置emqx、配置內置账号
修改/...本地目录.../emqx/etc/emqx.conf
找到 allow_anonymous = true 改为allow_anonymous = false,禁用匿名连接
配置Mnesia账户
修改/...本地目录.../emqx/etc/plugins/emqx_auth_mnesia.conf,配置认证账号

4、修改本地目录权限
$ chown -R 1000:1000 /...本地目录.../emqx/ $ chmod -R 755 /...本地目录.../emqx/
5、重新运行容器并挂载目录
停止并删除之前的容器,使用一下配置重启开始容器。
version: "3.8" services: emqx: image: emqx/emqx:4.4.19 restart: always container_name: emqx environment: EMQX_ADMIN_PASSWORD: xxxx@qq.com TZ: Asia/Shanghai networks: - base-net volumes: - /...本地目录.../etc:/opt/emqx/etc - /...本地目录.../data:/opt/emqx/data - /...本地目录.../lib:/opt/emqx/lib - /...本地目录.../log:/opt/emqx/log networks: base-net: external: true
docker-compose up -d
参考文章:
https://juejin.cn/post/7248412998577668152
https://www.cnblogs.com/virtulreal/p/14431704.html
emqx 5.8.6版本
1、将以下目录挂载到容器外部,这样即使容器被删除数据也不会丢失:
/opt/emqx/data(emqx容器目录)/opt/emqx/log(emqx容器目录)2、启动容器并挂载目录:docker run -d --name emqx \-p 1883:1883 -p 8083:8083 \-p 8084:8084 -p 8883:8883 \-p 18083:18083 \-v $PWD/data:/opt/emqx/data \-v $PWD/log:/opt/emqx/log \emqx/emqx:5.8.6三、从emqx容器内修改管理员密码
1、进入容器: docker exec -it emqx /bin/bash
2、执行命令:emqx ctl admins passoword admin xxxxxx #admin管理员账号 xxxxx是密码 使用管理员账户密码可进入Dashboard
3、执行 emqx ctl,用来查看所有可执行的命令有哪些
作者:DW039
出处:http://www.cnblogs.com/dw039
本文由DW039原创并发布于博客园,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。

浙公网安备 33010602011771号