71 lines
2.4 KiB
Docker
71 lines
2.4 KiB
Docker
# Используем образ 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 |