File size: 2,031 Bytes
55b0541
ea0dd40
2806807
ea0dd40
 
fcd826b
3034296
f6d59b2
54d383e
 
f6d59b2
3034296
 
 
 
4ee3470
 
 
 
8466e45
3034296
8466e45
ea0dd40
8466e45
ea0dd40
 
 
 
4ee3470
 
d3ff2e2
8466e45
 
d3ff2e2
8466e45
f6d59b2
 
2b16125
d3ff2e2
 
55b0541
4ee3470
8466e45
55b0541
4ee3470
 
 
 
 
ea0dd40
4ee3470
 
 
d3ff2e2
4ee3470
2b16125
7e9dd76
4ee3470
 
 
 
 
 
d3ff2e2
f20dd46
4ee3470
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
65
66
# First stage: build dependencies
FROM public.ecr.aws/docker/library/python:3.11.9-slim-bookworm

# Optional - install Lambda web adapter in case you want to run with with an AWS Lamba function URL
# COPY --from=public.ecr.aws/awsguru/aws-lambda-adapter:0.8.3 /lambda-adapter /opt/extensions/lambda-adapter

# Install wget
RUN apt-get update && \
	apt-get install -y wget && \ 
	apt-get install -y curl && \
	apt-get clean && rm -rf /var/lib/apt/lists/*

# Create a directory for the model
RUN mkdir /model

WORKDIR /src

COPY requirements.txt .

RUN pip install --no-cache-dir -r requirements.txt

# Gradio needs to be installed after due to conflict with spacy in requirements
RUN pip install --no-cache-dir gradio==4.37.2

# Download the BGE embedding model during the build process. Create a directory for the model and download specific files using huggingface_hub
RUN mkdir -p /model/minilm
COPY download_model.py /src/download_model.py
RUN python /src/download_model.py

# Set up a new user named "user" with user ID 1000
RUN useradd -m -u 1000 user

# Change ownership of /home/user directory
RUN chown -R user:user /home/user

EXPOSE 7860

# Make output folder
RUN mkdir -p /home/user/app/output && chown -R user:user /home/user/app/output
RUN mkdir -p /home/user/.cache/huggingface/hub && chown -R user:user /home/user/.cache/huggingface/hub

# Switch to the "user" user
USER user

# Set home to the user's home directory
ENV HOME=/home/user \
	PATH=/home/user/.local/bin:$PATH \
    PYTHONPATH=$HOME/app \
	PYTHONUNBUFFERED=1 \
	PYTHONDONTWRITEBYTECODE=1 \
	GRADIO_ALLOW_FLAGGING=never \
	GRADIO_NUM_PORTS=1 \
	GRADIO_SERVER_NAME=0.0.0.0 \
	GRADIO_SERVER_PORT=7860 \
	GRADIO_THEME=huggingface \
	AWS_STS_REGIONAL_ENDPOINT=regional \
	#GRADIO_ROOT_PATH=/data-text-search \
	SYSTEM=spaces
 
# Set the working directory to the user's home directory
WORKDIR $HOME/app

# Copy the current directory contents into the container at $HOME/app setting the owner to the user
COPY --chown=user . $HOME/app

CMD ["python", "app.py"]