近期由于grafana-image-render的一些问题,grafana是本地部署,而grafana-image-render是运行在docker容器中的,中间出现了一些配置上的问题无法解决,因此不得不把grafana从本地部署迁移到docker容器中,使得grafana和grafana-image-render一起运行在容器中。
迁移使用的是docker-compose组件作为容器的管理工具,迁移之前,有一些grafana的文件和目录需要备份和注意:
/etc/grafana/grafana.ini
/var/lib/grafana
/usr/share/grafana
/var/log/grafana
/var/lib/grafana/plugins
/etc/grafana/provisioning
上述文件和目录最好进行一个备份,后续会通过文件挂载的方式挂载到容器中以将原来本地的grafana配置映射到容器中。
备份好之后,添加docker-compose.yml文件,文件中添加以下内容:
version: '2'
services:
grafana:
image: grafana/grafana:latest
user: root
ports:
- '3000:3000'
environment:
PATH: "/usr/share/grafana/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
GF_PATHS_CONFIG: /etc/grafana/grafana.ini
GF_PATHS_DATA: /var/lib/grafana
GF_PATHS_HOME: /usr/share/grafana
GF_PATHS_LOGS: /var/log/grafana
GF_PATHS_PLUGINS: /var/lib/grafana/plugins
GF_PATHS_PROVISIONING: /etc/grafana/provisioning
GF_RENDERING_SERVER_URL: http://renderer:8081/render
GF_RENDERING_CALLBACK_URL: http://grafana:3000/
GF_LOG_FILTERS: rendering:debug
volumes:
- "/etc/grafana/grafana.ini:/etc/grafana/grafana.ini"
- "/var/lib/grafana:/var/lib/grafana"
- "/usr/share/grafana:/usr/share/grafana"
- "/var/log/grafana:/var/log/grafana"
- "/var/lib/grafana/plugins:/var/lib/grafana/plugins"
- "/etc/grafana/provisioning:/etc/grafana/provisioning"
renderer:
image: grafana/grafana-image-renderer:latest
ports:
- '8081:8081'
environment:
ENABLE METRICS: "true"
RENDERING DUMPIO: "true"
LOG LEVEL: debug
RENDERING ARGS: --no-sandbox,--disable-gpu
比较关键的一部分内容是上述文件中的volumes配置,volumes通过挂载将本地的配置映射到容器中,以保证迁移之后原先grafana中的配置可以原封不动的迁移到docker中。
配置好之后,输入以下命令以自动下载grafana镜像和image-render镜像并启动容器。
docker-compose up -d
迁移过程遇到容器启动失败的问题,docker-compose logs -f 发现报如下错误:
grafana_1 | GF_PATHS_CONFIG='/etc/grafana/grafana.ini' is not readable.
grafana_1 | GF_PATHS_DATA='/var/lib/grafana' is not writable.
解决办法:指定grafana容器的启动用户为root即可,即添加user: root。
version: '2'
services:
grafana:
image: grafana/grafana:latest
user: root