mirror of
https://github.com/grafana/grafana.git
synced 2025-02-25 18:55:37 -06:00
produce an image compatible with grafana-docker
This commit is contained in:
parent
c89f21ba29
commit
96d6657b00
@ -3,9 +3,12 @@
|
|||||||
.git
|
.git
|
||||||
.gitignore
|
.gitignore
|
||||||
.github
|
.github
|
||||||
|
.vscode
|
||||||
|
bin
|
||||||
data*
|
data*
|
||||||
dist
|
dist
|
||||||
docker
|
docker
|
||||||
|
Dockerfile
|
||||||
docs
|
docs
|
||||||
dump.rdb
|
dump.rdb
|
||||||
node_modules
|
node_modules
|
||||||
@ -13,3 +16,4 @@ node_modules
|
|||||||
/tmp
|
/tmp
|
||||||
*.yml
|
*.yml
|
||||||
*.md
|
*.md
|
||||||
|
/tmp
|
||||||
|
73
Dockerfile
73
Dockerfile
@ -1,28 +1,75 @@
|
|||||||
FROM golang:1.9
|
# Golang build container
|
||||||
RUN go get -u github.com/golang/dep/cmd/dep
|
FROM golang:1.10
|
||||||
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
|
|
||||||
|
|
||||||
|
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
|
FROM node:8
|
||||||
|
|
||||||
WORKDIR /usr/src/app/
|
WORKDIR /usr/src/app/
|
||||||
|
|
||||||
COPY package.json yarn.lock ./
|
COPY package.json yarn.lock ./
|
||||||
RUN yarn install --frozen-lockfile
|
RUN yarn install --frozen-lockfile
|
||||||
ENV NODE_ENV production
|
|
||||||
COPY Gruntfile.js tsconfig.json tslint.json ./
|
COPY Gruntfile.js tsconfig.json tslint.json ./
|
||||||
COPY public public
|
COPY public public
|
||||||
COPY scripts scripts
|
COPY scripts scripts
|
||||||
COPY emails emails
|
COPY emails emails
|
||||||
|
|
||||||
|
ENV NODE_ENV production
|
||||||
RUN yarn run build
|
RUN yarn run build
|
||||||
|
|
||||||
|
# Final container
|
||||||
FROM debian:stretch-slim
|
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=0 /go/bin/grafana-server /go/bin/grafana-cli ./bin/
|
||||||
COPY --from=1 /usr/src/app/public ./public
|
COPY --from=1 /usr/src/app/public ./public
|
||||||
COPY --from=1 /usr/src/app/tools ./tools
|
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
|
cp dist/grafana-latest.linux-x64.tar.gz packaging/docker
|
||||||
cd packaging/docker && docker build --tag grafana/grafana:dev .
|
cd packaging/docker && docker build --tag grafana/grafana:dev .
|
||||||
|
|
||||||
|
build-docker-full:
|
||||||
|
docker build --tag grafana/grafana:dev .
|
||||||
|
|
||||||
test-go:
|
test-go:
|
||||||
go test -v ./pkg/...
|
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