88 lines
3.1 KiB
Docker
88 lines
3.1 KiB
Docker
# Stage 1: build jar
|
||
FROM ubuntu:22.04 AS build
|
||
|
||
ENV DEBIAN_FRONTEND=noninteractive
|
||
|
||
# Установка Maven
|
||
RUN apt-get update && \
|
||
apt-get install -y maven && \
|
||
apt-get clean && \
|
||
rm -rf /var/lib/apt/lists/*
|
||
|
||
RUN apt-get update && \
|
||
apt-get install -y openjdk-21-jdk && \
|
||
apt-get clean && \
|
||
rm -rf /var/lib/apt/lists/*
|
||
|
||
|
||
WORKDIR /app
|
||
|
||
COPY pom.xml ./
|
||
|
||
RUN mvn dependency:go-offline -B
|
||
|
||
COPY src src
|
||
|
||
RUN mvn clean package -X -DskipTests
|
||
|
||
# Stage 2: deploy jar
|
||
FROM ubuntu:22.04
|
||
WORKDIR /app
|
||
|
||
# Аргумент для версии Chrome (можно переопределить при сборке)
|
||
ARG CHROME_VERSION="google-chrome-stable"
|
||
|
||
# Устанавливаем зависимости и Chrome
|
||
RUN apt-get update && apt-get install -y --no-install-recommends \
|
||
wget \
|
||
gnupg \
|
||
grep \
|
||
openjdk-21-jdk \
|
||
libgbm1 \
|
||
unzip \
|
||
jq \
|
||
ca-certificates \
|
||
fonts-liberation \
|
||
libu2f-udev \
|
||
xdg-utils \
|
||
# Добавляем репозиторий Google Chrome
|
||
&& wget -q -O - https://dl-ssl.google.com/linux/linux_signing_key.pub | apt-key add - \
|
||
&& sh -c 'echo "deb [arch=amd64] http://dl.google.com/linux/chrome/deb/ stable main" >> /etc/apt/sources.list.d/google.list' \
|
||
# Устанавливаем Chrome
|
||
&& apt-get update \
|
||
&& apt-get install -y --no-install-recommends ${CHROME_VERSION} \
|
||
# Очищаем кеш apt
|
||
&& rm -rf /var/lib/apt/lists/*
|
||
|
||
# Устанавливаем ChromeDriver, используя jq для парсинга JSON
|
||
RUN set -e \
|
||
&& JSON_URL="https://googlechromelabs.github.io/chrome-for-testing/last-known-good-versions-with-downloads.json" \
|
||
# Выбираем URL для стабильного канала и linux64
|
||
&& CHROMEDRIVER_URL=$(wget -qO- "${JSON_URL}" | jq -r '.channels.Stable.downloads.chromedriver[] | select(.platform=="linux64") | .url') \
|
||
&& if [ -z "${CHROMEDRIVER_URL}" ]; then echo "Ошибка: Не удалось получить URL для ChromeDriver из JSON."; exit 1; fi \
|
||
&& echo "Скачиваем ChromeDriver по адресу: ${CHROMEDRIVER_URL}" \
|
||
&& wget -q --continue -P /tmp "${CHROMEDRIVER_URL}" \
|
||
# Распаковываем архив (имя может содержать версию, используем *)
|
||
&& unzip -q /tmp/*chromedriver-linux64.zip -d /usr/local/bin/ \
|
||
&& rm -rf /tmp/chromedriver* \
|
||
# Перемещаем chromedriver из возможной подпапки
|
||
&& mv /usr/local/bin/chromedriver-linux64/chromedriver /usr/local/bin/chromedriver || true \
|
||
&& rm -rf /usr/local/bin/chromedriver-linux64 \
|
||
&& chmod +x /usr/local/bin/chromedriver
|
||
|
||
RUN apt-get update && \
|
||
DEBIAN_FRONTEND=noninteractive apt-get install -y locales && \
|
||
sed -i '/ru_RU.UTF-8/s/^# //g' /etc/locale.gen && \
|
||
locale-gen
|
||
|
||
ENV LANG=ru_RU.UTF-8 \
|
||
LC_ALL=ru_RU.UTF-8
|
||
|
||
COPY --from=build /app/target/cookieGenerator.jar ./cookieGenerator.jar
|
||
|
||
EXPOSE 8080
|
||
|
||
# Путь к ChromeDriver уже должен быть найден автоматически в /usr/local/bin
|
||
|
||
# Запускаем генератор
|
||
ENTRYPOINT ["java", "-jar", "cookieGenerator.jar"] |