mirror of https://github.com/grafana/grafana
commit
d8606ddfb0
@ -0,0 +1,82 @@ |
||||
# Golang build container |
||||
FROM golang:1.10 |
||||
|
||||
WORKDIR $GOPATH/src/github.com/grafana/grafana |
||||
|
||||
COPY Gopkg.toml Gopkg.lock ./ |
||||
COPY vendor vendor |
||||
|
||||
ARG DEP_ENSURE="" |
||||
RUN if [ ! -z "${DEP_ENSURE}" ]; then \ |
||||
go get -u github.com/golang/dep/cmd/dep && \ |
||||
dep ensure --vendor-only; \ |
||||
fi |
||||
|
||||
COPY pkg pkg |
||||
COPY build.go build.go |
||||
COPY package.json package.json |
||||
|
||||
RUN go run build.go build |
||||
|
||||
# Node build container |
||||
FROM node:8 |
||||
|
||||
WORKDIR /usr/src/app/ |
||||
|
||||
COPY package.json yarn.lock ./ |
||||
RUN yarn install --pure-lockfile --no-progress |
||||
|
||||
COPY Gruntfile.js tsconfig.json tslint.json ./ |
||||
COPY public public |
||||
COPY scripts scripts |
||||
COPY emails emails |
||||
|
||||
ENV NODE_ENV production |
||||
RUN ./node_modules/.bin/grunt build |
||||
|
||||
# Final container |
||||
FROM debian:stretch-slim |
||||
|
||||
ARG GF_UID="472" |
||||
ARG GF_GID="472" |
||||
|
||||
ENV 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" |
||||
|
||||
WORKDIR $GF_PATHS_HOME |
||||
|
||||
RUN apt-get update && apt-get install -qq -y libfontconfig ca-certificates && \ |
||||
apt-get autoremove -y && \ |
||||
rm -rf /var/lib/apt/lists/* |
||||
|
||||
COPY conf ./conf |
||||
|
||||
RUN mkdir -p "$GF_PATHS_HOME/.aws" && \ |
||||
groupadd -r -g $GF_GID grafana && \ |
||||
useradd -r -u $GF_UID -g grafana grafana && \ |
||||
mkdir -p "$GF_PATHS_PROVISIONING/datasources" \ |
||||
"$GF_PATHS_PROVISIONING/dashboards" \ |
||||
"$GF_PATHS_LOGS" \ |
||||
"$GF_PATHS_PLUGINS" \ |
||||
"$GF_PATHS_DATA" && \ |
||||
cp "$GF_PATHS_HOME/conf/sample.ini" "$GF_PATHS_CONFIG" && \ |
||||
cp "$GF_PATHS_HOME/conf/ldap.toml" /etc/grafana/ldap.toml && \ |
||||
chown -R grafana:grafana "$GF_PATHS_DATA" "$GF_PATHS_HOME/.aws" "$GF_PATHS_LOGS" "$GF_PATHS_PLUGINS" && \ |
||||
chmod 777 "$GF_PATHS_DATA" "$GF_PATHS_HOME/.aws" "$GF_PATHS_LOGS" "$GF_PATHS_PLUGINS" |
||||
|
||||
COPY --from=0 /go/src/github.com/grafana/grafana/bin/linux-amd64/grafana-server /go/src/github.com/grafana/grafana/bin/linux-amd64/grafana-cli ./bin/ |
||||
COPY --from=1 /usr/src/app/public ./public |
||||
COPY --from=1 /usr/src/app/tools ./tools |
||||
COPY tools/phantomjs/render.js ./tools/phantomjs/render.js |
||||
|
||||
EXPOSE 3000 |
||||
|
||||
COPY ./packaging/docker/run.sh /run.sh |
||||
|
||||
USER grafana |
||||
ENTRYPOINT [ "/run.sh" ] |
@ -0,0 +1,67 @@ |
||||
#!/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/#migration-from-a-previous-version-of-the-docker-container-to-5-1-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 |
||||
|
||||
if [ ! -z "${GF_INSTALL_PLUGINS}" ]; then |
||||
OLDIFS=$IFS |
||||
IFS=',' |
||||
for plugin in ${GF_INSTALL_PLUGINS}; do |
||||
IFS=$OLDIFS |
||||
grafana-cli --pluginsDir "${GF_PATHS_PLUGINS}" plugins install ${plugin} |
||||
done |
||||
fi |
||||
|
||||
exec grafana-server \ |
||||
--homepath="$GF_PATHS_HOME" \ |
||||
--config="$GF_PATHS_CONFIG" \ |
||||
"$@" \ |
||||
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" |
Loading…
Reference in new issue