# Image
FROM fedora:latest

# Install Java
ENV JAVA_RELEASE=OpenJDK17U-jdk_x64_linux_hotspot_17.0.1_12
ENV JAVA_DOWNLOAD=https://github.com/adoptium/temurin17-binaries/releases/download/jdk-17.0.1%2B12/OpenJDK17U-jdk_x64_linux_hotspot_17.0.1_12.tar.gz
ENV JAVA_VERSION=jdk-17.0.1+12

ENV JAVA_BASE=/opt/java
ENV JAVA_HOME=${JAVA_BASE}/${JAVA_VERSION}

# Enable JDK-17 support for Spark 3.2.0.
ENV _JAVA_OPTIONS='-Djdk.lang.processReaperUseDefaultStackSize=true --add-opens=java.base/sun.util.calendar=ALL-UNNAMED  --add-opens=java.base/java.nio=ALL-UNNAMED --add-opens=java.base/sun.nio.ch=ALL-UNNAMED --add-opens=java.base/java.lang=ALL-UNNAMED --add-opens=java.base/java.lang.invoke=ALL-UNNAMED --add-opens=java.base/jdk.internal.misc=ALL-UNNAMED --add-modules=jdk.incubator.foreign'

RUN curl -jkL ${JAVA_DOWNLOAD} --output ${JAVA_RELEASE}.tar.gz

RUN mkdir -p ${JAVA_BASE}
RUN tar -xf ${JAVA_RELEASE}.tar.gz -C ${JAVA_BASE}

# Install Spark
ENV SPARK_RELEASE=spark-3.2.0-bin-hadoop3.2-scala2.13
ENV SPARK_DOWNLOAD=https://archive.apache.org/dist/spark/spark-3.2.0/spark-3.2.0-bin-hadoop3.2-scala2.13.tgz

ENV SPARK_BASE=/opt/spark
ENV SPARK_HOME=${SPARK_BASE}/${SPARK_RELEASE}
ENV PATH=$PATH:${SPARK_HOME}/sbin:${SPARK_HOME}/bin:${JAVA_HOME}

RUN mkdir -p ${SPARK_BASE}
RUN curl ${SPARK_DOWNLOAD} --output ${SPARK_RELEASE}.tgz
RUN tar -xf ${SPARK_RELEASE}.tgz -C ${SPARK_BASE}

# Clean  
RUN rm ${SPARK_RELEASE}.tgz && rm ${JAVA_RELEASE}.tar.gz

ADD start-spark-master /
RUN chmod +x /start-spark-master

ADD start-spark-worker /
RUN chmod +x /start-spark-worker
