如何从导出的JSON自动更新Docker映像中的Grafana仪表板(和数据源)?

时间:2019-06-02 22:15:24

标签: bash docker grafana

我正在尝试使用导出的相关JSON(在Github / Bitbucket中存储(并定期更新))自动在Grafana Docker映像内更新Grafana仪表板/数据源。

例如:

  1. 运行Grafana的Docker映像
  2. Dockerfile添加了一个Bash脚本,该脚本从Git源中提取,
  3. 该脚本然后将JSON文件复制到相关目录(/ etc / grafana / provisioning / datasource + / dashboards)中。
  4. 无需手动干预即可更新图形和数据源(除了更新存储在Github或Bitbucket中的JSON)。

我已经在Grafana docker映像中执行了命令,并且Grafana在非常基本的linux系统上运行,因此实际上无法使用任何命令,即git,wget,apt。

我会愚蠢地以为应该从基本的Debian映像创建Dockerfile,运行apt更新并在其中安装git。然后以某种方式运行Grafana和该图像中的脚本?

请随时询问更多信息。

1 个答案:

答案 0 :(得分:0)

考虑使用docker卷的更简单方法:

  • grafana容器将docker卷用于/etc/grafana/provisioning/datasource + /dashboards
  • 这些docker卷与您创建的其他docker容器共享。
  • 您的Docker容器运行一台公开可用的webhook服务器。
  • 如果触发了该Webhook,则脚本将运行。
  • 该脚本git pull从您的仓库和copies the JSON files into the relevant directories中进行更改。 “相关目录”是您的docker和grafana docker之间共享的docker卷。
  • 您每次在master上进行一次推送时都在github存储库中注册了一个要执行的w​​ebhook。

整个过程是自动化的,如下所示:

  • 您使用相关资源将master推送到github存储库中
  • 您的带有传入的webhook服务器的docker被github戳了
  • 您的docker执行脚本
  • 该脚本git提取github存储库并将JSON文件复制到共享文件夹中
  • 如果您需要要从该脚本重新启动grafana容器,您可以安装docker socket -v /var/run/docker.sock并从容器内部执行docker命令。