# Use an official Python runtime as a base image
FROM ubuntu:18.04
FROM python:3.9-slim

# Expose the port to run it
ENV LISTEN_PORT=5000
EXPOSE 5000

LABEL Maintainer="arts-of-coding"
USER root

WORKDIR /dashboard

# fix locales
RUN apt-get update \
    && apt-get install -y --no-install-recommends locales \
    && rm -rf /var/lib/apt/lists/* \
    && localedef -i en_US -c -f UTF-8 -A /usr/share/locale/locale.alias en_US.UTF-8
 
ENV LANG en_US.utf8
 
# install blobfuse
RUN apt-get update \
    && apt-get install -y wget apt-utils \
    && wget https://packages.microsoft.com/config/ubuntu/18.04/packages-microsoft-prod.deb \
    && dpkg -i packages-microsoft-prod.deb \
    && apt-get remove -y wget \
    && apt-get update \
    && apt-get install -y --no-install-recommends fuse blobfuse blobfuse2 libcurl3-gnutls libgnutls30 sudo \
    && rm -rf /var/lib/apt/lists/*

COPY mount-blobfuse.sh /
RUN chmod +x /mount-blobfuse.sh
#COPY --from=compiler /opt/venv/bin/activate /usr/local/bin/activate_venv

#ADD /data/ /app/data/

WORKDIR /dashboard
WORKDIR /
RUN chmod 777 /dashboard
WORKDIR /dashboard

# Preset the volume change this to the actual azure folder
#VOLUME /dash_plotly_QC_scRNA/./data
COPY ./requirements.txt requirements.txt
RUN pip install --no-cache-dir --upgrade -r requirements.txt

#COPY . /app

COPY ./mount-blobfuse.sh mount-blobfuse.sh 

COPY ./dash_plotly_QC_scRNA.py dash_plotly_QC_scRNA.py

COPY ./main.py main.py

#RUN mkdir /azure

# Only when not using azure
COPY /data/ ./data/
#USER testuser
#RUN chown -R testuser /app/azure

#RUN chmod u+rx /mount-blobfuse.sh

# Only when using azure
#ENTRYPOINT ["/bin/bash", "-c", "/mount-blobfuse.sh; exec $SHELL"] 
#; exec $SHELL"

# How the docker app will run
CMD ["gunicorn","-w", "3", "-k", "uvicorn.workers.UvicornWorker", "main:dashboard1"] #, "--host", "0.0.0.0", "--port", "5000"

-w 3 -k uvicorn.workers.UvicornWorker