FROM ubuntu:22.04 AS jsl_build
ENV PYSPARK_PYTHON=python3
ENV PYSPARK_DRIVER_PYTHON=python3
ENV DEBIAN_FRONTEND=noninteractive
ENV TF_CPP_MIN_LOG_LEVEL='3'
ENV JAVA_HOME=/usr/lib/jvm/java-17-openjdk-amd64/
RUN echo "export JAVA_HOME=/usr/lib/jvm/java-17-openjdk-amd64/" >> ~/.bashrc
ENV LC_ALL=C.UTF-8 LANG=C.UTF-8

RUN apt-get update && apt-get install --no-install-recommends -y \
        openjdk-17-jdk-headless \
        python3 python3-pip python3-packaging\
        curl && apt-get clean && rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/*

COPY requirements.txt .
RUN --mount=type=cache,target=/root/.cache/pip pip install -r requirements.txt
RUN rm -rf /root/.cache


FROM jsl_build AS dependencies
ENV JSL_MODEL_REGISTRY_HOME=/root/.jsl_inference/model_registry/
RUN mkdir -p /opt/ml/model

{{COPY_ARTIFACTS_INSTRUCTION}}

COPY --from=jsl_model_registry . $JSL_MODEL_REGISTRY_HOME

RUN --mount=type=secret,id=license --mount=type=bind,rw,from=jsl_cache_pretrained,source=.,target=/root/cache_pretrained {{SETUP_ENVIRONMENT}}


FROM jsl_build AS final_build
{{ENVIRONMENT_VARIABLES}}

WORKDIR /app
ENV JSL_MODEL_REGISTRY_HOME=/root/.jsl_inference/model_registry/
COPY LICENSE .
ENV PYTHONPATH=/app
COPY --from=jsl_model_registry . $JSL_MODEL_REGISTRY_HOME
COPY --from=dependencies /usr/local/lib/python3.10/dist-packages/ /usr/local/lib/python3.10/dist-packages/
COPY --from=dependencies /root/.johnsnowlabs/ /root/.johnsnowlabs
COPY --from=dependencies /opt/ml/model/ /opt/ml/model/
RUN pip install pyspark==3.5.0 --upgrade
RUN rm /usr/local/lib/python3.10/dist-packages/pyspark/jars/libthrift-0.12.0.jar

{{ENTRYPOINT}}
