30 lines
1021 B
Docker
30 lines
1021 B
Docker
# ── Etapa 1: build ──────────────────────────────────────────────
|
|
FROM eclipse-temurin:17-jdk-alpine AS build
|
|
WORKDIR /app
|
|
|
|
# Copiamos wrapper y descriptores primero (cache de capas)
|
|
COPY gradlew gradlew.bat ./
|
|
COPY gradle/ gradle/
|
|
COPY build.gradle settings.gradle ./
|
|
|
|
# Descargamos dependencias sin copiar aún el código fuente
|
|
RUN chmod +x gradlew && ./gradlew dependencies --no-daemon -q || true
|
|
|
|
# Ahora copiamos el código y construimos el jar
|
|
COPY src/ src/
|
|
RUN ./gradlew bootJar -x test --no-daemon
|
|
|
|
# ── Etapa 2: runtime ─────────────────────────────────────────────
|
|
FROM eclipse-temurin:17-jre-alpine
|
|
WORKDIR /app
|
|
|
|
# Usuario no root por seguridad
|
|
RUN addgroup -S oracion && adduser -S oracion -G oracion
|
|
USER oracion
|
|
|
|
COPY --from=build /app/build/libs/*.jar app.jar
|
|
|
|
EXPOSE 8080
|
|
|
|
ENTRYPOINT ["java", "-jar", "app.jar"]
|