#--------- BEGIN DEVELOPER MODIFY FOR YOUR BUILD PROCESS ---------#
#Do not change the "AS build_image" part on the FROM
FROM python:3.8-slim 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 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

RUN apt-get -o Acquire::Max-FutureTime=86400 update
RUN apt-get install -y --no-install-recommends build-essential gcc
RUN pip install --upgrade pip
RUN python -m venv /opt/venv

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

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


# Add the application source code.

ADD ./pipeline /app/pipeline
ADD ./server /app/server
#ADD sigparser.py /app
#ADD api_model.py /app
#ADD ./pipeline /app/pipeline
#ADD ./app /app/app
#ADD ./script.py /app
#ADD ./example.html /app
ADD ./config.json /app
ADD ./test_pipeline.py /app
ADD ./gunicorn.conf.py /app
#RUN mkdir /app/.transformers_cache
#ADD ./.transformers_cache /app/.transformers_cache
# Download artifacts
ADD ./dvc_download_artifacts.sh /app
#ADD .dvc /app/.dvc

# 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 ./dvc_download_artifacts.sh
#RUN python -W ignore /app/script.py
RUN python /app/test_pipeline.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 python:3.8-slim 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

#RUN python -m pip install gunicorn==20.0.4
ENTRYPOINT ["gunicorn", "-c", "gunicorn.conf.py", "server.main:app"]
#CMD ["gunicorn", "-k uvicorn.workers.UvicornWorker", "--log-file=-", "--graceful-timeout", "240", "--timeout", "120", "--bind=0.0.0.0:8080", "--workers=3", "server.main:app"]
#--------- END DEVELOPER MODIFY FOR YOUR DEPLOYMENT APP ---------#
