前言
在先前的一篇文章(EII消息总线(EII Message Bus)发布和订阅数据实操)的末尾,笔者留了问题:“当EII软件栈重启时,InfluxDB中的数据,以及Grafana模块中保存的图表数据都不见了,包括Grafana设置的用户密码也重置了。”
这个问题显然带来了不好的体验,这文章,笔者尝试提供一种解决办法。
解决方案
解决思路:我们可以将InfluxDB和Grafana模块产生的数据,挂载到容器外进行保存,这样我们就实现了InfluxDB和Grafana模块数据的持久化。
1. 修改InfluxDB模块
首先,我们来修改InfluxDB模块。
- 打开"InfluxDBConnector/docker-compose.yml"文件,我们可以发现EII已经将"/influxdata"目录(该目录即是用来保存InfluxDB数据的目录)挂载到容器外,但是它却将挂载volume设置成了"临时保存"(tmpfs)的类型。这里我们只需要将"临时保存"(tmpfs)的配置注释掉即可。修改方法参考如下:
volumes:
vol_influxdb_data:
driver: local
# driver_opts:
# type: tmpfs
# device: tmpfs
- 此处修改了volume的配置,需要将原先已生成的volume删除。
$ docker volume rm edgeinsightssoftware_vol_influxdb_data
2. 修改Grafana模块
接着,我们来修改Grafana模块。
通过查看Grafana模块的docker-compose.yml文件,我们可以发现,Grafana模块默认并没有将保存数据的目录挂载到容器外。所以我们要多做一些修改。
- 在"Grafana/Dockerfile"文件中,我们创建一个用来保存数据的目录,并修改该目录的用户属性,以及赋予它相应的权限。参考如下内容,修改"Grafana/Dockerfi