Blob Blame History Raw
#!/bin/bash -eu
# Copyright (c) 2018 Grafana Labs.
# Copyright (c) 2020-2021 Red Hat.

. /etc/sysconfig/grafana-server

# setup permissions at the first start of the container with a volume mount
if [ ! -f "${DATA_DIR}/grafana.db" ]; then
  touch "${DATA_DIR}/grafana.db"
  chmod 640 "${DATA_DIR}/grafana.db"
fi

if [ ! -d "${PLUGINS_DIR}" ]; then
  mkdir "${PLUGINS_DIR}"
fi

# only for upgrades: delete the old plugin directory inside the volume
if [ -d "${PLUGINS_DIR}/grafana-pcp" ]; then
  rm -rf "${PLUGINS_DIR}/grafana-pcp"
fi
if [ -d "${PLUGINS_DIR}/performancecopilot-pcp-app" ] && [ ! -L "${PLUGINS_DIR}/performancecopilot-pcp-app" ]; then
  rm -rf "${PLUGINS_DIR}/performancecopilot-pcp-app"
fi

# /var/lib/grafana is mounted as a volume to persist the grafana.db database and any additional installed plugins
# let's place a symlink (in the volume) to the actual location of the grafana-pcp plugin (not in the volume)
ln -sf /usr/share/performancecopilot-pcp-app "${PLUGINS_DIR}"

# install Grafana plugins listed in the GF_INSTALL_PLUGINS environment variable
if [ -n "${GF_INSTALL_PLUGINS}" ]; then
  OLDIFS=$IFS
  IFS=','
  for plugin in ${GF_INSTALL_PLUGINS}; do
    IFS=$OLDIFS
    if [[ $plugin =~ .*\;.* ]]; then
        pluginUrl=$(echo "$plugin" | cut -d';' -f 1)
        pluginWithoutUrl=$(echo "$plugin" | cut -d';' -f 2)
        grafana-cli --pluginUrl "${pluginUrl}" plugins install "${pluginWithoutUrl}"
    else
        grafana-cli plugins install "${plugin}"
    fi
  done
fi

exec /usr/sbin/grafana-server \
    --homepath="${GRAFANA_HOME}" \
    --config="${CONF_FILE}" \
    --packaging="docker" \
    cfg:default.log.mode="console" \
    cfg:default.paths.logs="${LOG_DIR}" \
    cfg:default.paths.data="${DATA_DIR}" \
    cfg:default.paths.plugins="${PLUGINS_DIR}" \
    cfg:default.paths.provisioning="${PROVISIONING_CFG_DIR}" \
    "$@"