mirror of https://github.com/grafana/grafana
Add Dockerfiles for Ubuntu (#20196)
* Build: Add /Dockerfile.ubuntu * Build: Add packaging/docker/Dockerfile.ubuntu * Build: Add grafana-docker-ubuntu-pr CircleCI job * Build: Add CircleCI jobs for building master/release Ubuntu based Docker imagespull/20264/head
parent
b9bc8ade70
commit
e487c68156
@ -0,0 +1,85 @@ |
||||
FROM golang:1.13.1 AS go-builder |
||||
|
||||
WORKDIR /src/grafana |
||||
|
||||
COPY go.mod go.sum ./ |
||||
COPY vendor vendor/ |
||||
|
||||
RUN go mod verify |
||||
|
||||
COPY build.go package.json ./ |
||||
COPY pkg pkg/ |
||||
|
||||
RUN go run build.go build |
||||
|
||||
FROM node:10.17 AS js-builder |
||||
|
||||
# PhantomJS |
||||
RUN apt-get update && apt-get install -y curl &&\ |
||||
curl -L https://bitbucket.org/ariya/phantomjs/downloads/phantomjs-2.1.1-linux-x86_64.tar.bz2 | tar xj &&\ |
||||
cp phantomjs-2.1.1-linux-x86_64/bin/phantomjs /usr/local/bin/phantomjs |
||||
|
||||
WORKDIR /usr/src/app/ |
||||
|
||||
COPY package.json yarn.lock ./ |
||||
COPY packages packages |
||||
|
||||
RUN yarn install --pure-lockfile |
||||
|
||||
COPY Gruntfile.js tsconfig.json tslint.json .browserslistrc ./ |
||||
COPY public public |
||||
COPY scripts scripts |
||||
COPY emails emails |
||||
|
||||
ENV NODE_ENV production |
||||
RUN ./node_modules/.bin/grunt build |
||||
|
||||
FROM ubuntu:18.10 |
||||
|
||||
LABEL maintainer="Grafana team <hello@grafana.com>" |
||||
EXPOSE 3000 |
||||
|
||||
ARG GF_UID="472" |
||||
ARG GF_GID="472" |
||||
|
||||
ENV PATH="/usr/share/grafana/bin:$PATH" \ |
||||
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 |
||||
|
||||
# We need font libs for phantomjs, and curl should be part of the image |
||||
RUN apt-get update && apt-get upgrade -y && apt-get install -y ca-certificates libfontconfig1 curl |
||||
|
||||
RUN mkdir -p "$GF_PATHS_HOME/.aws" && \ |
||||
addgroup --system --gid $GF_GID grafana && \ |
||||
adduser --uid $GF_UID --system --ingroup grafana grafana && \ |
||||
mkdir -p "$GF_PATHS_PROVISIONING/datasources" \ |
||||
"$GF_PATHS_PROVISIONING/dashboards" \ |
||||
"$GF_PATHS_PROVISIONING/notifiers" \ |
||||
"$GF_PATHS_LOGS" \ |
||||
"$GF_PATHS_PLUGINS" \ |
||||
"$GF_PATHS_DATA" && \ |
||||
cp conf/sample.ini "$GF_PATHS_CONFIG" && \ |
||||
cp conf/ldap.toml /etc/grafana/ldap.toml && \ |
||||
chown -R grafana:grafana "$GF_PATHS_DATA" "$GF_PATHS_HOME/.aws" "$GF_PATHS_LOGS" "$GF_PATHS_PLUGINS" "$GF_PATHS_PROVISIONING" && \ |
||||
chmod -R 777 "$GF_PATHS_DATA" "$GF_PATHS_HOME/.aws" "$GF_PATHS_LOGS" "$GF_PATHS_PLUGINS" "$GF_PATHS_PROVISIONING" |
||||
|
||||
# PhantomJS |
||||
COPY --from=js-builder /usr/local/bin/phantomjs /usr/local/bin/ |
||||
|
||||
COPY --from=go-builder /src/grafana/bin/linux-amd64/grafana-server /src/grafana/bin/linux-amd64/grafana-cli bin/ |
||||
COPY --from=js-builder /usr/src/app/public public |
||||
COPY --from=js-builder /usr/src/app/tools tools |
||||
|
||||
COPY tools/phantomjs/render.js tools/phantomjs/ |
||||
COPY packaging/docker/run.sh / |
||||
|
||||
USER grafana |
||||
ENTRYPOINT [ "/run.sh" ] |
||||
@ -0,0 +1,58 @@ |
||||
ARG BASE_IMAGE=ubuntu:18.10 |
||||
FROM ${BASE_IMAGE} AS grafana-builder |
||||
|
||||
ARG GRAFANA_TGZ="grafana-latest.linux-x64.tar.gz" |
||||
|
||||
COPY ${GRAFANA_TGZ} /tmp/grafana.tar.gz |
||||
|
||||
RUN mkdir /tmp/grafana && tar xfz /tmp/grafana.tar.gz --strip-components=1 -C /tmp/grafana |
||||
|
||||
FROM ${BASE_IMAGE} |
||||
|
||||
EXPOSE 3000 |
||||
|
||||
# Set DEBIAN_FRONTEND=noninteractive in environment at build-time |
||||
ARG DEBIAN_FRONTEND=noninteractive |
||||
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 |
||||
|
||||
# Install dependencies |
||||
# We need curl in the image, and if the architecture is x86-64, we need to install libfontconfig1 for PhantomJS |
||||
RUN if [ `arch` = "x86_64" ]; then \ |
||||
apt-get update && apt-get upgrade -y && apt-get install -y ca-certificates libfontconfig1 curl && \ |
||||
apt-get autoremove -y && rm -rf /var/lib/apt/lists/*; \ |
||||
else \ |
||||
apt-get update && apt-get upgrade -y && apt-get install -y ca-certificates curl && \ |
||||
apt-get autoremove -y && rm -rf /var/lib/apt/lists/*; \ |
||||
fi |
||||
|
||||
COPY --from=grafana-builder /tmp/grafana "$GF_PATHS_HOME" |
||||
|
||||
RUN mkdir -p "$GF_PATHS_HOME/.aws" && \ |
||||
addgroup --system --gid $GF_GID grafana && \ |
||||
adduser --system --uid $GF_UID --ingroup grafana grafana && \ |
||||
mkdir -p "$GF_PATHS_PROVISIONING/datasources" \ |
||||
"$GF_PATHS_PROVISIONING/dashboards" \ |
||||
"$GF_PATHS_PROVISIONING/notifiers" \ |
||||
"$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" "$GF_PATHS_PROVISIONING" && \ |
||||
chmod -R 777 "$GF_PATHS_DATA" "$GF_PATHS_HOME/.aws" "$GF_PATHS_LOGS" "$GF_PATHS_PLUGINS" "$GF_PATHS_PROVISIONING" |
||||
|
||||
COPY ./run.sh /run.sh |
||||
|
||||
USER grafana |
||||
ENTRYPOINT [ "/run.sh" ] |
||||
@ -1,12 +1,32 @@ |
||||
#!/bin/sh |
||||
set -e |
||||
|
||||
OPT="" |
||||
UBUNTU_BASE=0 |
||||
|
||||
while [ "$1" != "" ]; do |
||||
case "$1" in |
||||
"--ubuntu") |
||||
OPT="${OPT} --ubuntu" |
||||
UBUNTU_BASE=1 |
||||
echo "Ubuntu base image enabled" |
||||
shift |
||||
;; |
||||
* ) |
||||
# unknown param causes args to be passed through to $@ |
||||
break |
||||
;; |
||||
esac |
||||
done |
||||
|
||||
_grafana_version=$1 |
||||
./build.sh "$_grafana_version" |
||||
./build.sh ${OPT} "$_grafana_version" |
||||
docker login -u "$DOCKER_USER" -p "$DOCKER_PASS" |
||||
|
||||
./push_to_docker_hub.sh "$_grafana_version" |
||||
./push_to_docker_hub.sh ${OPT} "$_grafana_version" |
||||
|
||||
if echo "$_grafana_version" | grep -q "^master-"; then |
||||
./deploy_to_k8s.sh "grafana/grafana-dev:$_grafana_version" |
||||
if [ ${UBUNTU_BASE} = "0" ]; then |
||||
if echo "$_grafana_version" | grep -q "^master-"; then |
||||
./deploy_to_k8s.sh "grafana/grafana-dev:$_grafana_version" |
||||
fi |
||||
fi |
||||
|
||||
Loading…
Reference in new issue