ci: implements jenkins deploy
This commit is contained in:
47
Dockerfile
47
Dockerfile
@@ -1,16 +1,47 @@
|
||||
# Stage 1: Build
|
||||
# --- Stage 1: Build & Dependencies ---
|
||||
FROM maven:3.9-eclipse-temurin-21-alpine AS build
|
||||
WORKDIR /app
|
||||
|
||||
# Copiamos todo el proyecto
|
||||
COPY . .
|
||||
# 1. Copiamos los archivos de configuración (Estructura de poms)
|
||||
COPY pom.xml .
|
||||
COPY application/pom.xml ./application/
|
||||
COPY bootstrap/pom.xml ./bootstrap/
|
||||
COPY domain/pom.xml ./domain/
|
||||
COPY infrastructure/pom.xml ./infrastructure/
|
||||
|
||||
# Compilamos todo el proyecto (todos los módulos)
|
||||
RUN mvn clean package -DskipTests
|
||||
# 2. Descargamos dependencias (Cacheamos esta capa)
|
||||
# Usamos install de los poms para que los módulos se reconozcan entre sí
|
||||
RUN mvn dependency:go-offline -B
|
||||
|
||||
# Stage 2: Run
|
||||
FROM openjdk:21-jdk
|
||||
# 3. Copiamos el código fuente y compilamos
|
||||
COPY application/src ./application/src
|
||||
COPY bootstrap/src ./bootstrap/src
|
||||
COPY domain/src ./domain/src
|
||||
COPY infrastructure/src ./infrastructure/src
|
||||
|
||||
RUN mvn clean package -DskipTests -B
|
||||
|
||||
# --- Stage 2: Run (Imagen final ligera) ---
|
||||
FROM eclipse-temurin:21-jre-alpine
|
||||
WORKDIR /app
|
||||
|
||||
# Seguridad: Usuario no-root
|
||||
RUN addgroup -S spring && adduser -S spring -G spring
|
||||
USER spring:spring
|
||||
|
||||
# Copiamos solo el JAR final (ajustado a tu módulo bootstrap)
|
||||
COPY --from=build /app/bootstrap/target/*.jar app.jar
|
||||
|
||||
# Configuración de Memoria y Rendimiento para Microservicios
|
||||
# -XX:+UseSerialGC: Menos consumo de RAM para apps < 1GB
|
||||
# -XX:TieredStopAtLevel=1: Arranque más rápido y menos uso de RAM del compilador JIT
|
||||
# -XX:MaxRAMPercentage: Se ajusta dinámicamente al límite de Docker
|
||||
ENV JAVA_OPTS="-XX:+UseContainerSupport \
|
||||
-XX:MaxRAMPercentage=75.0 \
|
||||
-XX:+UseSerialGC \
|
||||
-XX:TieredStopAtLevel=1 \
|
||||
-Xms128m"
|
||||
|
||||
EXPOSE 80
|
||||
ENTRYPOINT ["java", "-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=*:5005", "-Xmx512m", "-Xms256m", "-jar", "app.jar"]
|
||||
|
||||
ENTRYPOINT ["sh", "-c", "java $JAVA_OPTS -jar app.jar"]
|
||||
Reference in New Issue
Block a user