ci: implements jenkins deploy

This commit is contained in:
2026-02-21 10:47:21 +01:00
parent 4e72e6da77
commit c32c33f529
4 changed files with 37 additions and 18 deletions

View File

@@ -1,16 +1,33 @@
# Stage 1: Build
FROM maven:3.9-eclipse-temurin-21-alpine AS build
# --- Stage 1: Dependencias ---
FROM maven:3.9-eclipse-temurin-21-alpine AS deps
WORKDIR /app
# Copiamos solo el pom.xml para descargar librerías (esta capa se cachea)
COPY pom.xml .
RUN mvn dependency:go-offline
# --- Stage 2: Build ---
FROM deps AS build
COPY src ./src
# Al haber descargado las deps antes, esto es mucho más rápido
RUN mvn clean package -DskipTests -Dmaven.main.skip=false
# --- Stage 3: Run (Imagen final ultra-ligera) ---
FROM eclipse-temurin:21-jre-alpine
WORKDIR /app
# Copiamos todo el proyecto
COPY . .
# Crear un usuario sin privilegios por seguridad y para ahorrar recursos
RUN addgroup -S spring && adduser -S spring -G spring
USER spring:spring
# Compilamos todo el proyecto (todos los módulos)
RUN mvn clean package -DskipTests
# Stage 2: Run
FROM openjdk:21-jdk
WORKDIR /app
COPY --from=build /app/bootstrap/target/*.jar app.jar
EXPOSE 80
ENTRYPOINT ["java", "-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=*:5005", "-Xmx512m", "-Xms256m", "-jar", "app.jar"]
# Optimización de flags para APIs pequeñas:
# 1. SerialGC consume menos memoria que G1GC en montones pequeños (< 1GB)
# 2. TieredCompilation ayuda a arrancar más rápido con menos CPU
ENTRYPOINT ["java", \
"-XX:+UseContainerSupport", \
"-XX:MaxRAMPercentage=70.0", \
"-XX:+UseSerialGC", \
"-XX:TieredStopAtLevel=1", \
"-Xms64m", \
"-jar", "app.jar"]