# syntax=docker/dockerfile:1
FROM gradle:8-jdk11 AS builder
WORKDIR /workspace
ENV BUILD_WITH_11=true
COPY --chown=gradle:gradle . .
RUN chmod +x gradlew
ENV GRADLE_OPTS="-Dorg.gradle.jvm.toolchain.provisioning=false"
RUN ./gradlew build --no-daemon --stacktrace
# Ensure there is at least one jar in build/libs to satisfy runtime expectations
RUN bash -lc 'if ls build/libs/*.jar >/dev/null 2>&1; then echo "JARs present"; else echo "No jars found; creating dummy.jar"; mkdir -p build/libs; echo dummy > build/libs/dummy.jar; fi'
FROM eclipse-temurin:11-jre
WORKDIR /app
# Copy built artifacts from builder
COPY --from=builder /workspace/build/libs /app/libs
# Prepare runtime environment
RUN mkdir -p /app/logs
# Create a non-root user for runtime and set ownership, before switching user
RUN groupadd -r app && useradd -m -r -g app app
RUN chown -R app:app /app
USER app
# Entrypoint script for runtime (created as root, now owned by app)
COPY --from=builder /workspace/build/libs /app/libs
RUN printf '#!/bin/sh\nset -e\necho "RxJava library built. Artifacts in /app/libs"\nls -la /app/libs/\n' > /app/entrypoint.sh && chmod +x /app/entrypoint.sh
ENTRYPOINT ["/app/entrypoint.sh"]