mirror of
https://github.com/grafana/grafana.git
synced 2025-02-20 11:48:34 -06:00
produce an image compatible with grafana-docker
This commit is contained in:
parent
c89f21ba29
commit
96d6657b00
@ -3,9 +3,12 @@
|
||||
.git
|
||||
.gitignore
|
||||
.github
|
||||
.vscode
|
||||
bin
|
||||
data*
|
||||
dist
|
||||
docker
|
||||
Dockerfile
|
||||
docs
|
||||
dump.rdb
|
||||
node_modules
|
||||
@ -13,3 +16,4 @@ node_modules
|
||||
/tmp
|
||||
*.yml
|
||||
*.md
|
||||
/tmp
|
||||
|
73
Dockerfile
73
Dockerfile
@ -1,28 +1,75 @@
|
||||
FROM golang:1.9
|
||||
RUN go get -u github.com/golang/dep/cmd/dep
|
||||
WORKDIR $GOPATH/src/github.com/grafana/grafana
|
||||
COPY Gopkg.toml Gopkg.lock ./
|
||||
RUN dep ensure --vendor-only
|
||||
COPY pkg pkg
|
||||
RUN go install -ldflags="-s -w" ./pkg/cmd/grafana-server
|
||||
RUN go install -ldflags="-s -w" ./pkg/cmd/grafana-cli
|
||||
# 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
|
||||
RUN go install -ldflags="-s -w" ./pkg/cmd/grafana-server && \
|
||||
go install -ldflags="-s -w" ./pkg/cmd/grafana-cli
|
||||
|
||||
# Node build container
|
||||
FROM node:8
|
||||
|
||||
WORKDIR /usr/src/app/
|
||||
|
||||
COPY package.json yarn.lock ./
|
||||
RUN yarn install --frozen-lockfile
|
||||
ENV NODE_ENV production
|
||||
|
||||
COPY Gruntfile.js tsconfig.json tslint.json ./
|
||||
COPY public public
|
||||
COPY scripts scripts
|
||||
COPY emails emails
|
||||
|
||||
ENV NODE_ENV production
|
||||
RUN yarn run build
|
||||
|
||||
# Final container
|
||||
FROM debian:stretch-slim
|
||||
WORKDIR /app
|
||||
ENV PATH $PATH:/app/bin
|
||||
|
||||
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
|
||||
|
||||
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/bin/grafana-server /go/bin/grafana-cli ./bin/
|
||||
COPY --from=1 /usr/src/app/public ./public
|
||||
COPY --from=1 /usr/src/app/tools ./tools
|
||||
COPY conf ./conf
|
||||
CMD ["grafana-server"]
|
||||
|
||||
EXPOSE 3000
|
||||
|
||||
COPY ./docker/run.sh /run.sh
|
||||
|
||||
USER grafana
|
||||
ENTRYPOINT [ "/run.sh" ]
|
||||
|
3
Makefile
3
Makefile
@ -30,6 +30,9 @@ build-docker-dev:
|
||||
cp dist/grafana-latest.linux-x64.tar.gz packaging/docker
|
||||
cd packaging/docker && docker build --tag grafana/grafana:dev .
|
||||
|
||||
build-docker-full:
|
||||
docker build --tag grafana/grafana:dev .
|
||||
|
||||
test-go:
|
||||
go test -v ./pkg/...
|
||||
|
||||
|
67
docker/run.sh
Normal file
67
docker/run.sh
Normal file
@ -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
Block a user