From 961b74eaaed3b0bda1cc37bd7e2b90c5e13ec160 Mon Sep 17 00:00:00 2001 From: pashko Date: Sat, 22 Aug 2026 15:03:48 +0800 Subject: [PATCH] Add java/java-openjdk-maven/Dockerfile --- java/java-openjdk-maven/Dockerfile | 71 ++++++++++++++++++++++++++++++ 1 file changed, 71 insertions(+) create mode 100644 java/java-openjdk-maven/Dockerfile diff --git a/java/java-openjdk-maven/Dockerfile b/java/java-openjdk-maven/Dockerfile new file mode 100644 index 0000000..3ce3fa9 --- /dev/null +++ b/java/java-openjdk-maven/Dockerfile @@ -0,0 +1,71 @@ +# Используем образ RedOS-ubi8 в качестве базового +FROM docker.nexus01.rty.ru/registry.red-soft.ru/ubi8/ubi-minimal:8.0-250311 + +# Удаляем все репосзитории +RUN rm -f /etc/yum.repos.d/* && dnf clean all + +# Копируем локального репозитория +COPY distr/redos8-base-local.repo /etc/yum.repos.d/redos8-base-local.repo + +# Обновление кэша репозиториев +RUN dnf makecache + +# Устанавливаем необходимые зависимости +RUN dnf -y update && dnf -y upgrade \ + && dnf -y install \ + libicu \ + curl \ + unzip \ + tar \ + gzip \ + ca-certificates \ + easy-rsa \ + openssl-libs \ + krb5-libs \ + shadow-utils \ + && dnf clean all + +# Копируем архивы JDK и Maven из distr +COPY distr/openjdk-21.0.2_linux-x64_bin.tar.gz /tmp/openjdk.tar.gz +COPY distr/apache-maven-3.9.9-bin.zip /tmp/maven.zip +# Копируем сертификаты gitlab/nexus +COPY ./distr/certs/*pem /etc/pki/ca-trust/source/anchors/ + +# Обновление кэша репозиториев +RUN update-ca-trust + +# Устанавливаем JDK 21 (распаковываем в /usr/lib/jvm) +RUN mkdir -p /usr/lib/jvm && \ +tar -xzf /tmp/openjdk.tar.gz -C /usr/lib/jvm && \ +mv /usr/lib/jvm/jdk-21.0.2 /usr/lib/jvm/java-21-openjdk && \ +rm /tmp/openjdk.tar.gz + +# Устанавливаем Maven (распаковываем в /opt) +RUN unzip /tmp/maven.zip -d /opt && \ +mv /opt/apache-maven-3.9.9 /opt/maven && \ +rm /tmp/maven.zip + +# Импортируем сертификаты в Java keystore (для работы Maven с HTTPS) +RUN for cert in /etc/pki/ca-trust/source/anchors/*.pem; do \ + /usr/lib/jvm/java-21-openjdk/bin/keytool -import -noprompt \ + -alias $(basename $cert .pem) \ + -keystore /usr/lib/jvm/java-21-openjdk/lib/security/cacerts \ + -storepass changeit -file $cert; \ + done + + +# Настраиваем перменные окружения +ENV JAVA_HOME=/usr/lib/jvm/java-21-openjdk +ENV MAVEN_HOME=/opt/maven +ENV PATH="${JAVA_HOME}/bin:${MAVEN_HOME}/bin:${PATH}" +ENV KEYTOOL="${JAVA_HOME}/bin/keytool" +ENV CACERTS="${JAVA_HOME}/lib/security/cacerts" + +# Рабочая директория для артефактов +WORKDIR /app + +# Очистка временных файлов +RUN dnf clean all && \ + rm -rf /tmp/* && \ + rm -rf /var/log/* && \ + rm -rf /var/cache/dnf \ No newline at end of file