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"]