From 916cfcd3aae0d1aae9e5da279c76635dfce94e55 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ren=C3=A9=20Pfeuffer?= Date: Fri, 14 Jul 2023 14:24:03 +0200 Subject: [PATCH] Use Java 11 for ARM v7 images --- scm-packaging/docker/Dockerfile.java11 | 73 ++++++++++++++++++++++++++ scm-packaging/docker/docker-bake.hcl | 11 +++- 2 files changed, 83 insertions(+), 1 deletion(-) create mode 100644 scm-packaging/docker/Dockerfile.java11 diff --git a/scm-packaging/docker/Dockerfile.java11 b/scm-packaging/docker/Dockerfile.java11 new file mode 100644 index 0000000000..00d29decb5 --- /dev/null +++ b/scm-packaging/docker/Dockerfile.java11 @@ -0,0 +1,73 @@ +# +# MIT License +# +# Copyright (c) 2020-present Cloudogu GmbH and Contributors +# +# Permission is hereby granted, free of charge, to any person obtaining a copy +# of this software and associated documentation files (the "Software"), to deal +# in the Software without restriction, including without limitation the rights +# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +# copies of the Software, and to permit persons to whom the Software is +# furnished to do so, subject to the following conditions: +# +# The above copyright notice and this permission notice shall be included in all +# copies or substantial portions of the Software. +# +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +# SOFTWARE. +# + +# Create minimal java version +FROM eclipse-temurin:11.0.14.1_1-jdk-focal as jre-build + +RUN jlink \ + --add-modules ALL-MODULE-PATH \ + --strip-debug \ + --no-man-pages \ + --no-header-files \ + --compress=2 \ + --output /javaruntime + +# --- + +# SCM-Manager runtime +FROM debian:11.3-slim as runtime + +ENV SCM_HOME /var/lib/scm +ENV CACHE_DIR /var/cache/scm/work +ENV JAVA_HOME /opt/java/openjdk +ENV PATH "${JAVA_HOME}/bin:${PATH}" + +COPY --from=jre-build /javaruntime "${JAVA_HOME}" +COPY build/docker/etc /etc +COPY build/docker/opt /opt + +RUN set -x \ + && apt-get update \ + # libfreetype6 libfontconfig1 graphviz + && apt-get install -y --no-install-recommends libfreetype6 libfontconfig1 graphviz mercurial bash ca-certificates \ + # use gid 0 for openshift compatibility + && useradd -d "${SCM_HOME}" -u 1000 -g 0 -m -s /bin/bash scm \ + && mkdir -p ${SCM_HOME} ${CACHE_DIR} \ + && chmod +x /opt/scm-server/bin/scm-server \ + # set permissions to group 0 for openshift compatibility + && chown 1000:0 ${SCM_HOME} ${CACHE_DIR} \ + && chmod -R g=u ${SCM_HOME} ${CACHE_DIR} + +USER 1000 + +WORKDIR "/opt/scm-server" +VOLUME ["${SCM_HOME}", "${CACHE_DIR}"] +EXPOSE 8080 + +# we us a high relative high start period, +# because the start time depends on the number of installed plugins +HEALTHCHECK --interval=30s --timeout=3s --start-period=30s --retries=3 \ + CMD /opt/scm-server/bin/healthcheck || exit 1 + +ENTRYPOINT [ "/opt/scm-server/bin/scm-server" ] diff --git a/scm-packaging/docker/docker-bake.hcl b/scm-packaging/docker/docker-bake.hcl index 3d4de393f8..7edae346bc 100644 --- a/scm-packaging/docker/docker-bake.hcl +++ b/scm-packaging/docker/docker-bake.hcl @@ -82,5 +82,14 @@ target "debian" { tags = [ "${IMAGE}:${VERSION}-debian" ] - platforms = ["linux/amd64", "linux/arm64/v8", "linux/arm/v7"] + platforms = ["linux/amd64", "linux/arm64/v8"] +} + +target "java11" { + inherits = ["base"] + dockerfile = "Dockerfile.java11" + tags = [ + "${IMAGE}:${VERSION}-java11" + ] + platforms = ["linux/arm/v7"] }