FROM python:3.11-slim-bookworm
RUN apt-get update && apt-get install -y --no-install-recommends openjdk-17-jre-headless procps \
    && rm -rf /var/lib/apt/lists/*
# Kept identical to the rx-integrity image so both share cached Spark layers
ENV JAVA_HOME=/usr/lib/jvm/java-17-openjdk-amd64 PYTHONPATH=/app/src PYTHONUNBUFFERED=1
WORKDIR /app
COPY requirements.txt .
RUN pip install --no-cache-dir --default-timeout=600 --retries 10 -r requirements.txt
# Fetch the Delta and Kafka connector jars at build time so the container starts offline
RUN python -c "from delta import configure_spark_with_delta_pip as c; from pyspark.sql import SparkSession as S; \
c(S.builder.master('local[1]'), extra_packages=['org.apache.spark:spark-sql-kafka-0-10_2.12:3.5.3']).getOrCreate().stop()"
ENV PYTHONPATH=/app
COPY stormpulse ./stormpulse
COPY tests ./tests
CMD ["python", "-m", "stormpulse.job"]
