From da38bb21a7bbde00036e3ba10f0362fff6c021a5 Mon Sep 17 00:00:00 2001 From: Erich Blume Date: Mon, 23 Feb 2026 16:56:52 -0800 Subject: [PATCH] C2(upgrade-grafana): impl build-grafana-container Add home-built Grafana 12.3.3 container image based on Alpine 3.22 with pre-built OSS tarball from dl.grafana.com. Uses UID 472 for PVC compatibility with the official image, standard Grafana paths, and multi-arch support via TARGETPLATFORM detection. Update service-versions.yaml to track 12.3.3. Co-Authored-By: Claude Opus 4.6 --- containers/grafana/Dockerfile | 63 +++++++++++++++++++++++++++++++++++ service-versions.yaml | 4 +-- 2 files changed, 65 insertions(+), 2 deletions(-) create mode 100644 containers/grafana/Dockerfile diff --git a/containers/grafana/Dockerfile b/containers/grafana/Dockerfile new file mode 100644 index 0000000..c3010c7 --- /dev/null +++ b/containers/grafana/Dockerfile @@ -0,0 +1,63 @@ +ARG CONTAINER_APP_VERSION=12.3.3 + +FROM alpine:3.22 + +ARG TARGETPLATFORM +ARG CONTAINER_APP_VERSION +ARG GRAFANA_VERSION=${CONTAINER_APP_VERSION} + +RUN set -e && \ + apk --no-cache add dumb-init curl && \ + # Detect architecture + if [ -n "$TARGETPLATFORM" ]; then \ + echo "TARGETPLATFORM: $TARGETPLATFORM"; \ + case "$TARGETPLATFORM" in \ + linux/arm64*) ARCH="arm64" ;; \ + linux/amd64*) ARCH="amd64" ;; \ + *) ARCH="" ;; \ + esac; \ + else \ + echo "TARGETPLATFORM not set, detecting from uname..."; \ + UNAME_ARCH=$(uname -m); \ + echo "uname -m: $UNAME_ARCH"; \ + case "$UNAME_ARCH" in \ + aarch64|arm64) ARCH="arm64" ;; \ + x86_64) ARCH="amd64" ;; \ + *) ARCH="" ;; \ + esac; \ + fi && \ + if [ -z "$ARCH" ]; then \ + echo "ERROR: Unsupported architecture"; \ + exit 1; \ + fi && \ + url="https://dl.grafana.com/oss/release/grafana-${GRAFANA_VERSION}.linux-${ARCH}.tar.gz" && \ + echo "URL: $url" && \ + curl -fSL "$url" | tar -xz -C /tmp && \ + mv /tmp/grafana-v${GRAFANA_VERSION} /usr/share/grafana && \ + apk del curl + +# Standard Grafana paths +RUN mkdir -p /etc/grafana /var/lib/grafana /var/log/grafana && \ + cp /usr/share/grafana/conf/defaults.ini /etc/grafana/grafana.ini && \ + cp /usr/share/grafana/conf/defaults.ini /etc/grafana/defaults.ini + +# UID 472 matches official Grafana image for PVC compatibility +RUN adduser -D -u 472 -h /usr/share/grafana grafana && \ + chown -R grafana:grafana /usr/share/grafana /etc/grafana /var/lib/grafana /var/log/grafana + +USER grafana +WORKDIR /usr/share/grafana +EXPOSE 3000 + +LABEL org.opencontainers.image.title="Grafana" +LABEL org.opencontainers.image.description="Grafana OSS observability platform" +LABEL org.opencontainers.image.source="https://github.com/grafana/grafana" + +ENTRYPOINT ["/usr/bin/dumb-init", "--"] +CMD ["grafana", "server", \ + "--homepath=/usr/share/grafana", \ + "--config=/etc/grafana/grafana.ini", \ + "cfg:default.paths.data=/var/lib/grafana", \ + "cfg:default.paths.logs=/var/log/grafana", \ + "cfg:default.paths.plugins=/var/lib/grafana/plugins", \ + "cfg:default.paths.provisioning=/etc/grafana/provisioning"] diff --git a/service-versions.yaml b/service-versions.yaml index 69020e6..4f96986 100644 --- a/service-versions.yaml +++ b/service-versions.yaml @@ -83,9 +83,9 @@ services: - name: grafana type: argocd last-reviewed: 2026-02-23 - current-version: "v11.4.0" + current-version: "12.3.3" upstream-source: https://github.com/grafana/grafana/releases - notes: Helm chart 8.8.2; Mikado chain to upgrade to 12.x with kustomize + notes: Home-built container; upgrading to 12.x via Mikado chain - name: cloudnative-pg type: argocd