secont commit
This commit is contained in:
+32
@@ -0,0 +1,32 @@
|
||||
# syntax=docker/dockerfile:1
|
||||
|
||||
# ---- Build stage: compile & package the Spring Boot fat jar ----
|
||||
FROM maven:3.9-eclipse-temurin-17 AS build
|
||||
WORKDIR /build
|
||||
|
||||
# Cache dependencies: copy only the POM first, then resolve.
|
||||
# This layer is reused as long as pom.xml doesn't change.
|
||||
COPY pom.xml .
|
||||
RUN mvn -B -q dependency:go-offline
|
||||
|
||||
# Now copy sources and build (tests need a live DB, so skip them here).
|
||||
COPY src ./src
|
||||
RUN mvn -B -q clean package -DskipTests
|
||||
|
||||
# ---- Runtime stage: small JRE-only image ----
|
||||
FROM eclipse-temurin:17-jre-jammy AS runtime
|
||||
WORKDIR /app
|
||||
|
||||
# Run as an unprivileged user.
|
||||
RUN groupadd --system spring && useradd --system --gid spring spring
|
||||
|
||||
# Copy the built jar (there is exactly one *.jar; *.jar.original is excluded by the glob).
|
||||
COPY --from=build --chown=spring:spring /build/target/*.jar /app/app.jar
|
||||
|
||||
USER spring:spring
|
||||
|
||||
# Matches server.port in application.properties.
|
||||
EXPOSE 9192
|
||||
|
||||
# Container-aware heap sizing; extra flags can be added via JAVA_TOOL_OPTIONS.
|
||||
ENTRYPOINT ["java", "-XX:MaxRAMPercentage=75.0", "-jar", "/app/app.jar"]
|
||||
Reference in New Issue
Block a user