- Remove Spring Boot dependencies and annotations. - Implement Jooby MVC controllers and Guice dependency injection. - Migrate persistence layer to Ebean ORM. - Configure Flyway migrations and ApiErrorController. - Update application configuration to HOCON format.
49 lines
1.6 KiB
Docker
49 lines
1.6 KiB
Docker
# --- Stage 1: Build & Dependencies ---
|
|
FROM maven:3.9-eclipse-temurin-21-alpine AS build
|
|
WORKDIR /app
|
|
|
|
# 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/
|
|
|
|
# 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
|
|
|
|
# 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 app && adduser -S app -G app
|
|
USER app:app
|
|
|
|
RUN mkdir -p /app/tmp && chmod 777 /app/tmp
|
|
|
|
# Copiamos solo el JAR final (ajustado a tu módulo bootstrap)
|
|
COPY --from=build /app/bootstrap/target/bootstrap-*.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 ["sh", "-c", "java $JAVA_OPTS -jar app.jar"] |