# Multi-stage Dockerfile for Quarkus Auction Monitor # Build stage FROM maven:3.9-eclipse-temurin-25-alpine AS build WORKDIR /app # Copy Maven files for dependency caching COPY pom.xml ./ RUN mvn dependency:go-offline -B # Copy source code COPY src/ ./src/ # Build Quarkus application (fast-jar for production) RUN mvn package -DskipTests -Dquarkus.package.jar.type=fast-jar # Runtime stage FROM eclipse-temurin:25-jre-alpine WORKDIR /app # Create non-root user RUN addgroup -g 1001 quarkus && \ adduser -u 1001 -G quarkus -s /bin/sh -D quarkus # Create directories for data RUN mkdir -p /mnt/okcomputer/output/images && \ chown -R quarkus:quarkus /mnt/okcomputer # Copy Quarkus fast-jar structure COPY --from=build --chown=quarkus:quarkus /app/target/quarkus-app/lib/ /app/lib/ COPY --from=build --chown=quarkus:quarkus /app/target/quarkus-app/*.jar /app/ COPY --from=build --chown=quarkus:quarkus /app/target/quarkus-app/app/ /app/app/ COPY --from=build --chown=quarkus:quarkus /app/target/quarkus-app/quarkus/ /app/quarkus/ # Switch to non-root user USER quarkus # Expose ports EXPOSE 8081 # Set environment variables ENV JAVA_OPTS="-Dquarkus.http.host=0.0.0.0 -Djava.util.logging.manager=org.jboss.logmanager.LogManager" ENV JAVA_APP_JAR="/app/quarkus-run.jar" # Health check HEALTHCHECK --interval=30s --timeout=3s --start-period=10s --retries=3 \ CMD wget --no-verbose --tries=1 --spider http://localhost:8081/health/live || exit 1 # Run the Quarkus application ENTRYPOINT ["sh", "-c", "java $JAVA_OPTS -jar $JAVA_APP_JAR"]