diff --git a/.gitignore b/.gitignore index 5543587e..ba7cc1fd 100644 --- a/.gitignore +++ b/.gitignore @@ -9,5 +9,4 @@ venv/ .env opentelemetry-javaagent*.jar grafana-opentelemetry*.jar -build/ diff --git a/docker/Dockerfile b/docker/Dockerfile index 45df2c67..6f43a414 100644 --- a/docker/Dockerfile +++ b/docker/Dockerfile @@ -1,16 +1,25 @@ -# hadolint global ignore=DL3059 -FROM redhat/ubi9:9.5-1744101466 - # renovate: datasource=github-releases depName=grafana packageName=grafana/grafana -ENV GRAFANA_VERSION=v11.6.0 +ARG GRAFANA_VERSION=v11.6.0 # renovate: datasource=github-releases depName=prometheus packageName=prometheus/prometheus -ENV PROMETHEUS_VERSION=v3.2.1 +ARG PROMETHEUS_VERSION=v3.2.1 # renovate: datasource=github-releases depName=tempo packageName=grafana/tempo -ENV TEMPO_VERSION=v2.7.2 +ARG TEMPO_VERSION=v2.7.2 # renovate: datasource=github-releases depName=loki packageName=grafana/loki -ENV LOKI_VERSION=v3.4.3 +ARG LOKI_VERSION=v3.4.3 # renovate: datasource=github-releases depName=opentelemetry-collector packageName=open-telemetry/opentelemetry-collector-releases -ENV OPENTELEMETRY_COLLECTOR_VERSION=v0.123.1 +ARG OPENTELEMETRY_COLLECTOR_VERSION=v0.123.1 + +# hadolint global ignore=DL3059 +FROM redhat/ubi9:9.5-1744101466 AS builder + +RUN mkdir /otel-lgtm +WORKDIR /otel-lgtm + +ARG GRAFANA_VERSION +ARG PROMETHEUS_VERSION +ARG TEMPO_VERSION +ARG LOKI_VERSION +ARG OPENTELEMETRY_COLLECTOR_VERSION # TARGETARCH is automatically detected and set by the Docker daemon during the build process. If the build starts # on an amd64 architecture, than the TARGETARCH will be set to `amd64`. @@ -18,11 +27,8 @@ ENV OPENTELEMETRY_COLLECTOR_VERSION=v0.123.1 ARG TARGETARCH ENV TARGETARCH=${TARGETARCH} -RUN mkdir /otel-lgtm -WORKDIR /otel-lgtm - # hadolint ignore=DL3033 -RUN yum install -y unzip jq procps dos2unix && yum clean all +RUN yum install -y unzip dos2unix jq procps RUN bash -c 'ARCHIVE=grafana-"${GRAFANA_VERSION:1}".linux-"${TARGETARCH}".tar.gz && \ curl -sOL https://dl.grafana.com/oss/release/"${ARCHIVE}" && \ @@ -46,7 +52,8 @@ RUN bash -c 'ARCHIVE=loki-linux-"${TARGETARCH}".zip && \ curl -sOL https://github.com/grafana/loki/releases/download/"${LOKI_VERSION}"/"${ARCHIVE}" && \ mkdir loki && \ unzip "${ARCHIVE}" -d loki/ && \ - rm "${ARCHIVE}"' + rm "${ARCHIVE}" && \ + mv loki/loki-linux-"${TARGETARCH}" loki/loki' RUN bash -c 'ARCHIVE=otelcol-contrib_"${OPENTELEMETRY_COLLECTOR_VERSION:1}"_linux_"${TARGETARCH}".tar.gz && \ curl -sOL https://github.com/open-telemetry/opentelemetry-collector-releases/releases/download/"${OPENTELEMETRY_COLLECTOR_VERSION}"/"${ARCHIVE}" && \ @@ -73,4 +80,46 @@ COPY run-all.sh . # hadolint ignore=SC2038,DL4006 RUN find . -maxdepth 1 -type f | xargs dos2unix +FROM redhat/ubi9-micro:9.5-1744118077 + +RUN mkdir /otel-lgtm +WORKDIR /otel-lgtm + +COPY --from=builder --chown=0:0 /usr/bin/curl /usr/bin/ +COPY --from=builder --chown=0:0 /usr/bin/jq /usr/bin/ +COPY --from=builder --chown=0:0 /usr/bin/grep /usr/bin/ +# jq +COPY --from=builder --chown=0:0 /usr/lib64/libjq.so.1 /lib64/libjq.so.1 +COPY --from=builder --chown=0:0 /usr/lib64/libonig.so.5 /lib64/libonig.so.5 +# curl +COPY --from=builder --chown=0:0 /usr/lib64/libkeyutils.so* /lib64/ +COPY --from=builder --chown=0:0 /usr/lib64/libz.so* /lib64/ +COPY --from=builder --chown=0:0 /usr/lib64/libkrb5support.so* /lib64/ +COPY --from=builder --chown=0:0 /usr/lib64/libkrb5.so* /lib64/ +COPY --from=builder --chown=0:0 /usr/lib64/libk5crypto.so* /lib64/ +COPY --from=builder --chown=0:0 /usr/lib64/libgssapi_krb5.so* /lib64/ +COPY --from=builder --chown=0:0 /usr/lib64/libcom_err.so* /lib64/ +COPY --from=builder --chown=0:0 /usr/lib64/libssl.so* /lib64/ +COPY --from=builder --chown=0:0 /usr/lib64/libcrypto.so* /lib64/ +COPY --from=builder --chown=0:0 /usr/lib64/libcurl.so* /lib64/ +COPY --from=builder --chown=0:0 /usr/lib64/libnghttp2.so* /lib64/ +COPY --from=builder --chown=0:0 /usr/lib64/libresolv.so* /lib64/ +# grep +COPY --from=builder --chown=0:0 /usr/lib64/libpcre.so.1 /lib64/libpcre.so.1 +COPY --from=builder --chown=0:0 /usr/lib64/libsigsegv.so.2 /lib64/libsigsegv.so.2 + +COPY --from=builder /otel-lgtm /otel-lgtm + +# just for displaying the version in the startup message +ARG GRAFANA_VERSION +ARG PROMETHEUS_VERSION +ARG TEMPO_VERSION +ARG LOKI_VERSION +ARG OPENTELEMETRY_COLLECTOR_VERSION +ENV GRAFANA_VERSION=${GRAFANA_VERSION} +ENV PROMETHEUS_VERSION=${PROMETHEUS_VERSION} +ENV TEMPO_VERSION=${TEMPO_VERSION} +ENV LOKI_VERSION=${LOKI_VERSION} +ENV OPENTELEMETRY_COLLECTOR_VERSION=${OPENTELEMETRY_COLLECTOR_VERSION} + CMD ["/otel-lgtm/run-all.sh"] diff --git a/docker/run-loki.sh b/docker/run-loki.sh index 901c4805..47507b5a 100755 --- a/docker/run-loki.sh +++ b/docker/run-loki.sh @@ -4,4 +4,4 @@ source ./logging.sh mkdir -p /data/loki -run_with_logging "Loki ${LOKI_VERSION}" "${ENABLE_LOGS_LOKI:-false}" ./loki/loki-linux-"${TARGETARCH}" --config.file=./loki-config.yaml +run_with_logging "Loki ${LOKI_VERSION}" "${ENABLE_LOGS_LOKI:-false}" ./loki/loki --config.file=./loki-config.yaml diff --git a/mise.lock b/mise.lock index 13c3766e..53670dc8 100644 --- a/mise.lock +++ b/mise.lock @@ -1,8 +1,11 @@ [tools.go] # renovate: datasource=github-releases depName=go packageName=golang/go -version = "1.24.1" +version = "1.24.2" backend = "core:go" +[tools.go.checksums] +"go1.24.2.linux-amd64.tar.gz" = "sha256:68097bd680839cbc9d464a0edce4f7c333975e27a90246890e9f1078c7e702ad" + [tools."go:github.com/grafana/oats"] # renovate: datasource=github-releases depName=oats packageName=grafana/oats version = "0.2.1" diff --git a/mise.toml b/mise.toml index 3308cc45..fbb7f448 100644 --- a/mise.toml +++ b/mise.toml @@ -1,7 +1,7 @@ [tools] go = "latest" -"go:github.com/grafana/oats" = "0.2.1" -java = "temurin-21.0.6+7.0.LTS" +"go:github.com/grafana/oats" = "latest" +java = "temurin-21" lychee = "latest" markdownlint-cli2 = "latest"