首先,使用不带volume的yml配置文件,必须设置NODE_NAME
和NODE_HOST
环境变量,用来保持EMQX的唯一性。下面是docker-compose.yml
:
version: "3"
services:
emqx:
container_name: emqx
image: emqx/emqx:v4.0.0
networks:
cloud:
aliases:
- emqx
environment:
- EMQX_NAME=mqtt
- EMQX_HOST=10.20.30.40
ports:
- "1883:1883"
networks:
cloud:
external: true
启动容器成功后,需要将容器里的相应文件夹拷贝到持久化的位置上:
docker cp emqx:/opt/emqx/etc ~/emqx/etc
docker cp emqx:/opt/emqx/lib ~/emqx/lib
docker cp emqx:/opt/emqx/data ~/emqx/data
docker cp emqx:/opt/emqx/log ~/emqx/log
然后更改这几个文件夹的Owner、Group、权限:
cd ~/emqx
chown -R 1000:1000 data etc lib log
chmod -R 775 data etc lib log
修改docker-compose.yml
,添加volume映射:
volumes:
- $HOME/emqx/lib:/opt/emqx/lib
- $HOME/emqx/etc:/opt/emqx/etc
- $HOME/emqx/data:/opt/emqx/data
- $HOME/emqx/log:/opt/emqx/log
移除旧的容器,重新创建一个容器即可。
网友评论