FROM ubuntu:20.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-8-openjdk-amd64/
RUN export JAVA_HOME
RUN echo "export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64/" >> ~/.bashrc
ENV LC_ALL=C.UTF-8 LANG=C.UTF-8

RUN apt-get update && apt-get install -y software-properties-common && \
    add-apt-repository ppa:deadsnakes/ppa

RUN apt-get update && apt-get install --no-install-recommends -y \
        python3.9 \
        python3.9-dev \
        python3.9-distutils \
        openjdk-8-jdk \
        curl && apt-get clean && rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/*

RUN update-alternatives --install /usr/bin/python3 python3 /usr/bin/python3.9 1

RUN curl https://bootstrap.pypa.io/pip/3.9/get-pip.py -o get-pip.py && \
    python3 get-pip.py && \
    rm get-pip.py


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.9/dist-packages/ /usr/local/lib/python3.9/dist-packages/
COPY --from=dependencies /root/.johnsnowlabs/ /root/.johnsnowlabs
COPY --from=dependencies /opt/ml/model/ /opt/ml/model/

{{ENTRYPOINT}}
