Create sub project
This commit is contained in:
88
Dockerfile
Normal file
88
Dockerfile
Normal file
@ -0,0 +1,88 @@
|
||||
# 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"]
|
Reference in New Issue
Block a user