# ============================================================================= # Stage 1: Build # ============================================================================= FROM docker.io/library/maven:3.9-eclipse-temurin-21 AS build WORKDIR /build # Dependencies zuerst cachen (Layer-Cache bei Code-Änderungen stabil) COPY pom.xml . RUN mvn dependency:go-offline -q COPY src ./src RUN mvn package -DskipTests -q # ============================================================================= # Stage 2: Runtime # ============================================================================= FROM docker.io/library/eclipse-temurin:21-jre WORKDIR /app # Emoji-Schriftart für PDF-Export (Java AWT nutzt fontconfig-Fallback automatisch) RUN apt-get update && apt-get install -y --no-install-recommends \ fonts-noto-color-emoji fontconfig \ && fc-cache -f \ && rm -rf /var/lib/apt/lists/* # Quarkus Fast-JAR Layout kopieren COPY --from=build /build/target/quarkus-app/lib/ ./lib/ COPY --from=build /build/target/quarkus-app/*.jar ./ COPY --from=build /build/target/quarkus-app/app/ ./app/ COPY --from=build /build/target/quarkus-app/quarkus/ ./quarkus/ EXPOSE 8090 # Alle Konfigurationswerte können als Env-Variablen überschrieben werden: # # DC_API_KEY API-Key für eingehende Anfragen # DC_AI_BASE_URL Ollama-Endpunkt # DC_AI_API_KEY Ollama X-API-KEY # DC_AI_MAIN_MODEL Hauptmodell (Übersetzung + Auswertung) # DC_AI_OCR_MODEL OCR-Modell # QUARKUS_REST_CLIENT_ORDS_API_URL ORDS-Basis-URL ENV JAVA_OPTS="-Dquarkus.http.host=0.0.0.0 -Djava.util.logging.manager=org.jboss.logmanager.LogManager -Djava.awt.headless=true" HEALTHCHECK --interval=30s --timeout=5s --start-period=15s --retries=3 \ CMD curl -sf http://localhost:8090/check/health || exit 1 ENTRYPOINT ["sh", "-c", "java $JAVA_OPTS -jar quarkus-run.jar"]