之前的文章 讲述了如何用 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

这里的数据,账号不丢失的重点就是

  1. 挂载 data 目录到外面。
  2. 固定IP(节点名字)。

解决

参考链接