#--------- BEGIN DEVELOPER MODIFY FOR YOUR BUILD PROCESS ---------#
#Do not change the "AS build_image" part on the FROM
ARG BUILD_IMAGE_SOURCE="python:3.8-slim"
ARG DEPLOY_IMAGE_SOURCE="python:3.8-slim"
FROM ${BUILD_IMAGE_SOURCE} AS build_image
#FROM docker.io/library/model_artifcats AS build_image
#Do not remove the BUILD_ACTION ARG, you can change its default value. You must use it in your build command in the RUN section for Jenkins to deploy your artifact.

ARG PIP_ACTION=install
ARG ARTIFACTORY_USERNAME
ARG ARTIFACTORY_PASSWORD

ENV GIT_PYTHON_REFRESH=quiet
ENV ARTIFACTORY_USR=$ARTIFACTORY_USERNAME
ENV ARTIFACTORY_PSW=$ARTIFACTORY_PASSWORD

#ENV TRANSFORMERS_CACHE='/app/.transformers_cache'

WORKDIR /app

ENV PATH="/opt/venv/bin:$PATH"

#ADD serving/ /app/serving/
ADD requirements_docker.txt /app/requirements_docker.txt
RUN pip ${PIP_ACTION} --no-cache-dir -r /app/requirements_docker.txt


# Add the application source code.

ADD ./pipeline /app/pipeline
ADD ./server /app/server
ADD ./tester /app/tester
ADD ./config /app/config
#ADD ./pipeline /app/pipeline
#ADD ./app /app/app
#ADD ./script.py /app
#ADD ./example.html /app
ADD ./pipeline_test.py /app
ADD ./gunicorn.conf.py /app
#ADD ./gcloud_credentials.json .
#RUN mkdir /app/.transformers_cache
#ADD ./.transformers_cache /app/.transformers_cache

# Download artifacts
ADD ./dvc_download_artifacts.sh /app
#ADD .dvc /app/.dvc

#####  Cloud Eval Worker #####
COPY ./cloud_eval /app/cloud_eval


# ingore warning since downloading a bert pretrained model generates a warning
#RUN python -W ignore /app/app/download_artifacts.py
RUN groupadd -g 999 appuser && \
        useradd -r -d /app -u 999 -g appuser appuser
RUN chown -R appuser:appuser /app
#RUN chown -R appuser:appuser /opt/venv
#RUN chown -R appuser:appuser /bin/sh
#
USER appuser

RUN ["chmod", "+x", "/app/dvc_download_artifacts.sh"]
#RUN /app/dvc_download_artifacts.sh
#RUN python -W ignore /app/script.py
RUN python /app/pipeline_test.py
#RUN apt-get -y install wget
#--------- END DEVELOPER MODIFY FOR YOUR BUILD PROCESS ---------#

#--------- BEGIN DEVELOPER MODIFY FOR YOUR DEPLOYMENT APP ---------#
#Do not change the "AS deploy_image" part of the FROM
FROM ${DEPLOY_IMAGE_SOURCE} AS deploy_image

MAINTAINER ZOOMINFO

WORKDIR /app

EXPOSE 8080/tcp
#Do not change "--from=build_image" it applies logic we us for our builds. sonar_scan will always have the same files as build_image
ENV PATH="/opt/venv/bin:$PATH"
#ENV TRANSFORMERS_CACHE='/app/.transformers_cache'
#ENV OMP_NUM_THREADS=2
#ENV MKL_NUM_THREADS=2
#ENV PYTORCH_INTEROP_THREADS=8
#ENV ATEN_THREADING=TBB
RUN groupadd -g 999 appuser && \
        useradd -r -d /app -u 999 -g appuser appuser

COPY --from=build_image --chown=appuser:appuser /opt/venv /opt/venv
COPY --from=build_image --chown=appuser:appuser /app /app


RUN chown -R appuser:appuser /app
RUN chown -R appuser:appuser /opt/venv

#USER 1001
USER appuser

# ENTRYPOINT ["gunicorn", "-c", "gunicorn.conf.py", "server.main:app"]
#CMD ["gunicorn", "-k uvicorn.workers.UvicornH11Worker",  "--preload", "--graceful-timeout", "240", "--timeout", "120", "--log-file=-", "--bind=0.0.0.0:8080", "--workers=3", "--log-level=debug", "server.server_run:app"]
#--------- END DEVELOPER MODIFY FOR YOUR DEPLOYMENT APP ---------#
