File size: 2,290 Bytes
01c88c0
 
641ff3e
37d982e
641ff3e
 
 
 
 
 
 
 
01c88c0
 
 
619a281
e5dfae7
 
 
01c88c0
 
 
a3ba5e2
 
 
01c88c0
 
 
 
 
 
 
 
 
641ff3e
 
71761cb
641ff3e
d32c12a
01c88c0
 
 
 
 
 
 
641ff3e
 
71761cb
641ff3e
43287c3
641ff3e
 
01c88c0
641ff3e
01c88c0
641ff3e
 
85a7cbf
71761cb
641ff3e
dce6100
641ff3e
 
 
 
 
 
71761cb
641ff3e
e5dfae7
 
 
 
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
67
68
69
70
71
72
73
74
# Stage 1: Build dependencies and download models
FROM public.ecr.aws/docker/library/python:3.11.9-slim-bookworm AS builder

# Install system dependencies. Need to specify -y for poppler to get it to install
RUN apt-get update \
    && apt-get clean \
    && rm -rf /var/lib/apt/lists/*

WORKDIR /src

COPY requirements.txt .

RUN pip install --no-cache-dir --target=/install -r requirements.txt

RUN rm requirements.txt

# Add lambda_entrypoint.py to the container
COPY lambda_entrypoint.py .

# Stage 2: Final runtime image
FROM public.ecr.aws/docker/library/python:3.11.9-slim-bookworm

# Install Lambda web adapter in case you want to run with with an AWS Lamba function URL (not essential if not using Lambda)
COPY --from=public.ecr.aws/awsguru/aws-lambda-adapter:0.8.4 /lambda-adapter /opt/extensions/lambda-adapter

# Install system dependencies. Need to specify -y for poppler to get it to install
RUN apt-get update \
    && apt-get install -y \
        tesseract-ocr \
        poppler-utils \
        libgl1-mesa-glx \
        libglib2.0-0 \
    && apt-get clean \
    && rm -rf /var/lib/apt/lists/*

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

# Make output folder
RUN mkdir -p /home/user/app/output \
&& mkdir -p /home/user/app/tld \
&& mkdir -p /home/user/app/logs \
&& chown -R user:user /home/user/app

# Copy installed packages from builder stage
COPY --from=builder /install /usr/local/lib/python3.11/site-packages/

# Switch to the "user" user
USER user

# Set environmental variables
ENV HOME=/home/user \
	PATH=/home/user/.local/bin:$PATH \
    PYTHONPATH=/home/user/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 \
	TLDEXTRACT_CACHE=$HOME/app/tld/.tld_set_snapshot \
	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

# Keep the default entrypoint as flexible
ENTRYPOINT ["python", "-u", "entrypoint_router.py"]

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