Docker容器MQTT

EMQX的Docker持久化方法

2020-04-28  本文已影响0人  爱翻身的咸鱼

首先,使用不带volume的yml配置文件,必须设置NODE_NAMENODE_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

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

上一篇下一篇

猜你喜欢

热点阅读