Spaces:
Sleeping
Sleeping
File size: 2,195 Bytes
7832703 37e7cb9 79d7ca9 7832703 37e7cb9 7832703 78fbfa8 bcea21a 89100e4 acdfb5c 447bc57 0d44817 37e7cb9 7832703 37e7cb9 7832703 37e7cb9 bfa9638 acdfb5c 7832703 acdfb5c 7832703 bfa9638 acdfb5c bfa9638 5b1d21d 7832703 37e7cb9 acdfb5c bcea21a acdfb5c bcea21a acdfb5c |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 |
# Use an official Python runtime as a parent image
FROM python:3.9
# Install system dependencies required by OpenCV
RUN apt-get update && apt-get install -y \
libgl1-mesa-glx \
&& rm -rf /var/lib/apt/lists/*
# Create a non-root user with a specified user ID
RUN useradd -m -u 1000 user
# Set environment variables for the non-root user
ENV HOME=/home/user \
PATH=/home/user/.local/bin:$PATH \
NAME=EduConnect \
EC_ADMIN_PWD='$2b$12$wGncNhE7OVmsb7TKFuNPKuJfKOIKdGtw302VMDJbAPrHrY73jqID.' \
HF_MODEL_NAME="BitBasher/llama-2-7b-mini-ibased-GGUF" \
GGUF_MODEL_URL='https://huggingface.co/BitBasher/llama-2-7b-mini-ibased-GGUF/resolve/main/llama-2-7b-mini-ibased.Q5_K_M.gguf' \
MODEL_CLASS='gguf' \
CHROMADB_LOC='/home/user/data/chromadb' \
HF_HOME=/data/.huggingface
# Set the non-root user's home directory as the working directory
WORKDIR $HOME
# Change to the non-root user
USER user
# Copy only the requirements.txt first to leverage Docker cache
COPY --chown=user:user requirements.txt $HOME/app/
# Copy Static files for Jinja2 templates
COPY --chown=user:user ./static /home/user/app/static
# Install any needed packages specified in requirements.txt
RUN pip install --no-cache-dir --user -r $HOME/app/requirements.txt
# Set the working directory to where the application files will be located
WORKDIR $HOME/app
# Copy the rest of the application files into the container
COPY --chown=user:user ./app .
# Create a symbolic link from /data to /home/user/data
RUN ln -s /data /home/user/data
# Set Python path just to make sure
ENV PYTHONPATH="/home/user/app:${PYTHONPATH}"
# Make port 7860 available to the world outside this container
EXPOSE 7860
# Adjust the COPY command for the entrypoint script to ensure correct placement
COPY --chown=user:user entrypoint.sh /home/user/entrypoint.sh
# Change permission of entrypoint.sh and make sure it is executable
RUN chmod +x /home/user/entrypoint.sh
# Update the ENTRYPOINT command to use the full path to entrypoint.sh
ENTRYPOINT ["/home/user/entrypoint.sh"]
# Adjust the CMD to ensure it correctly references the FastAPI app
CMD ["uvicorn", "main:app", "--host", "0.0.0.0", "--port", "7860"]
|