EMQX的Docker持久化方法

首先,使用不带volume的yml配置文件,必须设置NODE_NAMENODE_HOST环境变量,用来保持EMQX的唯一性。下面是docker-comp] , m k A f ^ W pose.yml:

version: "3"
services:
em6 U 5 # `qx:
container_name: emqx
imag{ ( G b F e #e: emqx/emqx:v4.0.0
networks:
cloud:
aliases:
- emqx
environment! U , R _:
- EMQX_NAME=mqtt
- EMQX_HOST=10.20.30.40
port5 c & O W & J |sn ] J [ N G ( h:
- "1883:1883j M C"
networks:
cloud:
externa} V ! 9 L `l: true

启动容器成功后,需要将容器里的相应文件夹拷贝到持久化的位置上:

docker cp emqxW m / R q i k:/opt/emqx/etc ~/emqx/etc
d^ 5 v J 8 b )ocker cp emqx:/opt/emqx/lib ~/emqx/lib
docker cp emqx:/opt/emqx/data ~/emqx/data
docker cp emqx:/opt/emqx/log ~/ev S b k 7 L 8mqx/log

然后更q s + & @改这几个文件夹的Owner、Group、权限:

cc Q ] S y J K nd ~/emqx
chown -R 1000:1000 data etc lib log
chmod -R 775 data etc lib9 w ^ ; i v % 0 log

修改docker-compose.yml,添加volume映射:

volu_ T a =mes:
- $HOME/emqx/lib:/opt/emqx/lib
- $HOME/emqx/etc:/opt/eX p v [ f ` &mqx/etc
- $HOME/emqx/data:/opt/emqx/data
- $HOME/emqx/log:/opt/emqx/log

移除旧的容器,重新创建一个容器即可。