我正在Docker
中运行AWS ECS
,并且在ECS实例的docker容器内,我正在运行eclipse-mosquitto
我需要将消息存储在/mosquitto/data
中
我尝试了什么
[docker exec -it [container name] sh
导航至/mosquitto/config/mosquitto.conf
修改了mosquitto.conf
文件并添加了以下几行:
persistence true
persistence_location /mosquitto/data/
listener 1883
listener 9001
protocol websockets
NOTE
我在EFS
上安装了/mosquitto
,因此我希望配置文件能够持久存在,并且我希望它在下次容器重启时使用该配置文件
我期望什么
无论何时我是主题的publishing/subscribing
,都应将相关数据存储在mosquitto/data
下
第一
登录到运行中的容器并编辑配置文件不会更改运行中的代理行为。您通常需要重新启动容器(它将更改恢复到配置文件)
您可以在启动时使用以下命令行选项将自己的配置文件安装到容器中(在docker hub page上进行了描述]
$ docker run -it -p 1883:1883 -p 9001:9001 -v mosquitto.conf:/mosquitto/config/mosquitto.conf eclipse-mosquitto
mosquitto不会将所有消息存储在持久性文件中,这不是它的用途。该文件仅用于存储正在运行的QOS 1或2消息以及保留的消息。这些消息通常保留在内存中,但是会定期或在代理关闭时写入到文件中,以便在代理重新启动时可以将其还原。持久性文件的格式也是自定义二进制格式,这不是您可以轻松阅读的格式。第二