之前的文章 讲述了如何用 docker compose 部署 emqx 单节点 . 但是在实际试用中会遇到一些问题 ,这里做记录和优化.
问题记录
1. 服务器重启后配置丢失
部署后服务可以正常运行 , 但是在服务器重启后 , Dashboard的账号密码 , 还有 API KEY都会丢失 , 重新设置才会生效 , 因此需要优化
__2. __若直接挂载目录,Emqx运行时会直接用到目录中一些配置文件 , 没有就会报错无法启动
解决方案
首先初始化一个临时容器,复制容器中所需文件到部署的主机目录 , 笔者这里直接用shell封装好了
setup.sh
1 2 3 4 5 6 7
| #!/bin/bash docker run -d --name temp emqx/emqx:5.8.0 docker cp temp:/opt/emqx/etc . docker cp temp:/opt/emqx/data . docker cp temp:/opt/emqx/log . docker rm -f temp docker-compose up -d --build
|
docker-compose.yml
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26
| version: "3.7" services: service-emqx: image: emqx/emqx:5.8.0 container_name: emqx privileged: true user: root ports: - 1883:1883 - 8083:8083 - 8084:8084 - 8883:8883 - 18083:18083 environment: EMQX_NODE_NAME: emqx@node volumes: - /etc/localtime:/etc/localtime:ro - $PWD/data:/opt/emqx/data - $PWD/log:/opt/emqx/log - $PWD/etc:/opt/emqx/etc restart: always networks: - nginx_ycc networks: nginx_ycc: external: true
|
这里的数据,账号不丢失的重点就是
- 挂载 data 目录到外面。
- 固定IP(节点名字)。
解决
参考链接