lcc_tool/dockerfile
Jan a83ee4dacd - added actuator
- optimized dockerfile
2025-10-23 20:59:48 +02:00

56 lines
No EOL
1.4 KiB
Text

# Frontend Build Stage
FROM node:20-alpine AS frontend-build
WORKDIR /app/frontend
# Nur package files zuerst kopieren für besseres Caching
COPY src/frontend/package*.json ./
RUN npm ci --only=production
# Frontend Source Code kopieren
COPY src/frontend/ ./
# Frontend bauen
RUN npm run build
# Backend Build Stage
FROM maven:3.9-eclipse-temurin-23 AS backend-build
WORKDIR /app
# Nur pom.xml zuerst für besseres Dependency Caching
COPY pom.xml ./
RUN mvn dependency:go-offline -B
# Backend Source Code kopieren (ohne frontend)
COPY src ./src
# Frontend Build Results kopieren
COPY --from=frontend-build /app/frontend/dist ./src/main/resources/static
# Build mit optimierten Maven Settings
RUN mvn clean package -DskipTests -B -T 1C
# Runtime Stage - Optimiert
FROM eclipse-temurin:23-jre-alpine
# Sicherheit: Non-root User
RUN addgroup -g 1001 -S appgroup && \
adduser -u 1001 -S appuser -G appgroup
WORKDIR /app
# App kopieren
COPY --from=backend-build --chown=appuser:appgroup /app/target/*.jar app.jar
# Wechsel zu non-root user
USER appuser
# Health check hinzufügen (optional, passe den Pfad an)
HEALTHCHECK --interval=30s --timeout=3s --start-period=40s --retries=3 \
CMD wget --no-verbose --tries=1 --spider http://localhost:8080/actuator/health || exit 1
EXPOSE 8080
# JVM Memory Optimierungen
ENV JAVA_OPTS="-XX:+UseContainerSupport -XX:MaxRAMPercentage=75.0 -XX:+ExitOnOutOfMemoryError"
ENTRYPOINT ["sh", "-c", "java $JAVA_OPTS -jar app.jar"]