## ## AfterWork Server - Production Dockerfile ## Build stage avec Maven + Runtime optimisé avec UBI8 OpenJDK 17 ## # ====================================== # STAGE 1: Build de l'application # ====================================== FROM registry.access.redhat.com/ubi8/openjdk-17:1.18 AS builder USER root # Installation de Maven RUN microdnf install -y maven && microdnf clean all # Copie des fichiers du projet WORKDIR /build COPY pom.xml . COPY src ./src # Build de l'application (skip tests pour accélérer) RUN mvn clean package -DskipTests -Dquarkus.package.type=uber-jar # ====================================== # STAGE 2: Image de runtime # ====================================== FROM registry.access.redhat.com/ubi8/openjdk-17-runtime:1.18 # Variables d'environnement par défaut ENV LANG='en_US.UTF-8' \ LANGUAGE='en_US:en' \ TZ='Africa/Douala' \ QUARKUS_PROFILE=prod \ DB_HOST=postgres \ DB_PORT=5432 \ DB_NAME=afterwork_db \ DB_USERNAME=afterwork \ DB_PASSWORD=changeme \ JAVA_OPTS_APPEND="-XX:+UseG1GC \ -XX:+StringDeduplication \ -XX:+OptimizeStringConcat \ -XX:MaxRAMPercentage=75.0 \ -XX:+HeapDumpOnOutOfMemoryError \ -XX:HeapDumpPath=/tmp/heapdump.hprof \ -Djava.net.preferIPv4Stack=true" # Configuration du port EXPOSE 8080 # Copie de l'uber-jar depuis le builder COPY --from=builder --chown=185:185 /build/target/*-runner.jar /deployments/app.jar # User non-root pour la sécurité USER 185 # Healthcheck sur l'endpoint Quarkus HEALTHCHECK --interval=30s --timeout=10s --start-period=60s --retries=3 \ CMD curl -f http://localhost:8080/q/health/ready || exit 1 # Lancement de l'application ENTRYPOINT ["java", "-jar", "/deployments/app.jar"]