mirror of
https://github.com/grafana/grafana.git
synced 2024-12-25 08:21:46 -06:00
de99ce139c
* avoid the need for a second bulky binary for grafana-cli * look for grafana-server in $PATH as well as same directory * implement unified "grafana" command * update dockerfiles, fix grafana-cli -v * update packaging to work with single binary - add wrapper scripts for grafana and grafana-server - update and sync package files - implement --sign flag of build package command - stop packaging scripts folder, they are not useful for end users - add support for --configOverrides in server command - remove unused nfpm.yaml config file * windows support
90 lines
3.2 KiB
Bash
Executable File
90 lines
3.2 KiB
Bash
Executable File
#!/bin/bash -e
|
|
|
|
PERMISSIONS_OK=0
|
|
|
|
if [ ! -r "$GF_PATHS_CONFIG" ]; then
|
|
echo "GF_PATHS_CONFIG='$GF_PATHS_CONFIG' is not readable."
|
|
PERMISSIONS_OK=1
|
|
fi
|
|
|
|
if [ ! -w "$GF_PATHS_DATA" ]; then
|
|
echo "GF_PATHS_DATA='$GF_PATHS_DATA' is not writable."
|
|
PERMISSIONS_OK=1
|
|
fi
|
|
|
|
if [ ! -r "$GF_PATHS_HOME" ]; then
|
|
echo "GF_PATHS_HOME='$GF_PATHS_HOME' is not readable."
|
|
PERMISSIONS_OK=1
|
|
fi
|
|
|
|
if [ $PERMISSIONS_OK -eq 1 ]; then
|
|
echo "You may have issues with file permissions, more information here: http://docs.grafana.org/installation/docker/#migrate-to-v51-or-later"
|
|
fi
|
|
|
|
if [ ! -d "$GF_PATHS_PLUGINS" ]; then
|
|
mkdir "$GF_PATHS_PLUGINS"
|
|
fi
|
|
|
|
if [ ! -z ${GF_AWS_PROFILES+x} ]; then
|
|
> "$GF_PATHS_HOME/.aws/credentials"
|
|
|
|
for profile in ${GF_AWS_PROFILES}; do
|
|
access_key_varname="GF_AWS_${profile}_ACCESS_KEY_ID"
|
|
secret_key_varname="GF_AWS_${profile}_SECRET_ACCESS_KEY"
|
|
region_varname="GF_AWS_${profile}_REGION"
|
|
|
|
if [ ! -z "${!access_key_varname}" -a ! -z "${!secret_key_varname}" ]; then
|
|
echo "[${profile}]" >> "$GF_PATHS_HOME/.aws/credentials"
|
|
echo "aws_access_key_id = ${!access_key_varname}" >> "$GF_PATHS_HOME/.aws/credentials"
|
|
echo "aws_secret_access_key = ${!secret_key_varname}" >> "$GF_PATHS_HOME/.aws/credentials"
|
|
if [ ! -z "${!region_varname}" ]; then
|
|
echo "region = ${!region_varname}" >> "$GF_PATHS_HOME/.aws/credentials"
|
|
fi
|
|
fi
|
|
done
|
|
|
|
chmod 600 "$GF_PATHS_HOME/.aws/credentials"
|
|
fi
|
|
|
|
# Convert all environment variables with names ending in __FILE into the content of
|
|
# the file that they point at and use the name without the trailing __FILE.
|
|
# This can be used to carry in Docker secrets.
|
|
for VAR_NAME in $(env | grep '^GF_[^=]\+__FILE=.\+' | sed -r "s/([^=]*)__FILE=.*/\1/g"); do
|
|
VAR_NAME_FILE="$VAR_NAME"__FILE
|
|
if [ "${!VAR_NAME}" ]; then
|
|
echo >&2 "ERROR: Both $VAR_NAME and $VAR_NAME_FILE are set (but are exclusive)"
|
|
exit 1
|
|
fi
|
|
echo "Getting secret $VAR_NAME from ${!VAR_NAME_FILE}"
|
|
export "$VAR_NAME"="$(< "${!VAR_NAME_FILE}")"
|
|
unset "$VAR_NAME_FILE"
|
|
done
|
|
|
|
export HOME="$GF_PATHS_HOME"
|
|
|
|
if [ ! -z "${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)
|
|
pluginInstallFolder=$(echo "$plugin" | cut -d';' -f 2)
|
|
grafana cli --pluginUrl ${pluginUrl} --pluginsDir "${GF_PATHS_PLUGINS}" plugins install "${pluginInstallFolder}"
|
|
else
|
|
grafana cli --pluginsDir "${GF_PATHS_PLUGINS}" plugins install ${plugin}
|
|
fi
|
|
done
|
|
fi
|
|
|
|
exec grafana server \
|
|
--homepath="$GF_PATHS_HOME" \
|
|
--config="$GF_PATHS_CONFIG" \
|
|
--packaging=docker \
|
|
"$@" \
|
|
cfg:default.log.mode="console" \
|
|
cfg:default.paths.data="$GF_PATHS_DATA" \
|
|
cfg:default.paths.logs="$GF_PATHS_LOGS" \
|
|
cfg:default.paths.plugins="$GF_PATHS_PLUGINS" \
|
|
cfg:default.paths.provisioning="$GF_PATHS_PROVISIONING"
|