This commit is contained in:
root
2025-09-14 13:11:42 +05:00
parent 1daae73939
commit 9a70abdb15
+22 -43
View File
@@ -1,50 +1,29 @@
# Используем официальный образ OpenJDK 21 для сборки
FROM openjdk:21-jdk-slim as builder
FROM maven:3.9.9-eclipse-temurin-21 AS build
WORKDIR /app
COPY ./pom.xml ./
RUN mvn dependency:resolve
COPY . .
RUN mvn clean install -DskipTests
# Устанавливаем рабочую директорию
FROM openjdk:21-jdk-slim
# Create a non-root user and group for security
RUN groupadd -r appgroup && useradd -r -s /bin/false -g appgroup appuser
# Create a directory for heap dumps and give ownership to the new user
RUN mkdir /dumps && chown appuser:appgroup /dumps
# Set the working directory
WORKDIR /app
# Копируем файлы Maven
COPY mvnw .
COPY mvnw.cmd .
COPY .mvn .mvn
COPY pom.xml .
# Copy the application jar from the build stage
COPY --from=build /app/target/*.jar app.jar
# Делаем mvnw исполняемым
RUN chmod +x ./mvnw
# Change ownership of the application files to the non-root user
RUN chown appuser:appgroup app.jar
# Скачиваем зависимости (этот слой будет кешироваться если pom.xml не изменился)
RUN ./mvnw dependency:go-offline -B
# Копируем исходный код
COPY src src
# Собираем приложение
RUN ./mvnw clean package -DskipTests
# Создаем финальный образ
FROM openjdk:21-jre-slim
# Устанавливаем рабочую директорию
WORKDIR /app
# Создаем пользователя для безопасности
RUN groupadd -r appuser && useradd -r -g appuser appuser
# Копируем собранный JAR файл из builder образа
COPY --from=builder /app/target/*.jar app.jar
# Меняем владельца файла
RUN chown appuser:appuser app.jar
# Переключаемся на непривилегированного пользователя
# Switch to the non-root user
USER appuser
# Открываем порт 80 (как указано в application.yml)
EXPOSE 80
# Устанавливаем переменные окружения для JVM
ENV JAVA_OPTS="-Xmx512m -Xms256m"
# Команда запуска приложения
ENTRYPOINT ["sh", "-c", "java $JAVA_OPTS -jar app.jar"]
# Run the jar file with JVM flags for heap dump generation on OutOfMemoryError
ENTRYPOINT ["java", "-XX:+HeapDumpOnOutOfMemoryError", "-XX:HeapDumpPath=/dumps/heap.hprof", "-jar", "app.jar"]