|
1 | | -# Stage 1: Build |
2 | | -FROM maven:3.9-eclipse-temurin-17 AS build |
| 1 | +# Stage 1: Build (Optimizat pentru caching) |
| 2 | +FROM maven:3.9.6-eclipse-temurin-17-alpine AS build |
3 | 3 | WORKDIR /app |
4 | | -COPY . . |
5 | | -RUN mvn clean package -DskipTests |
6 | 4 |
|
7 | | -# Stage 2: Runtime |
| 5 | +# Copiem doar pom.xml pentru a descărca dependențele (caching layer) |
| 6 | +COPY pom.xml . |
| 7 | +RUN mvn dependency:go-offline -B |
| 8 | + |
| 9 | +# Copiem sursele și compilăm |
| 10 | +COPY src ./src |
| 11 | +RUN mvn clean package -DskipTests -B |
| 12 | + |
| 13 | +# Stage 2: Runtime (Security-Hardened) |
8 | 14 | FROM eclipse-temurin:17-jre-alpine |
9 | 15 | WORKDIR /app |
| 16 | + |
| 17 | +# Parametri de optimizare JVM pentru containere |
| 18 | +ENV JAVA_OPTS="-XX:+UseParallelGC -XX:MaxRAMPercentage=75.0 -Djava.security.egd=file:/dev/./urandom" |
| 19 | + |
| 20 | +# Securitate: Creăm un user de sistem pentru a evita rularea ca root |
| 21 | +RUN addgroup -S btp-group && adduser -S btp-user -G btp-group |
| 22 | + |
| 23 | +# Copiem doar artefactul necesar |
10 | 24 | COPY --from=build /app/target/*.jar adapter.jar |
11 | | -# Securitate: Rulăm ca utilizator non-root |
12 | | -RUN addgroup -S spring && adduser -S spring -G spring |
13 | | -USER spring:spring |
| 25 | + |
| 26 | +# Setăm permisiunile corecte |
| 27 | +RUN chown btp-user:btp-group adapter.jar |
| 28 | + |
| 29 | +# Switch la user non-root |
| 30 | +USER btp-user |
| 31 | + |
14 | 32 | EXPOSE 8080 |
15 | | -ENTRYPOINT ["java", "-jar", "adapter.jar"] |
| 33 | + |
| 34 | +# ENTRYPOINT configurat să accepte parametri externi (pentru Kyma/K8s) |
| 35 | +ENTRYPOINT ["sh", "-c", "java $JAVA_OPTS -jar adapter.jar"] |
0 commit comments