muddasser commited on
Commit
9c92112
·
verified ·
1 Parent(s): 5a5291b

Update Dockerfile

Browse files
Files changed (1) hide show
  1. Dockerfile +33 -26
Dockerfile CHANGED
@@ -1,41 +1,48 @@
1
- FROM python:3.10-slim
2
 
3
- WORKDIR /app
4
 
5
- # Install system dependencies
6
  RUN apt-get update && apt-get install -y --no-install-recommends \
7
- build-essential \
8
- libgl1 \
9
- libglib2.0-0 \
10
- ffmpeg \
11
- libsm6 \
12
- wget \
13
  && rm -rf /var/lib/apt/lists/*
14
 
15
- # Environment variables for EasyOCR
16
- ENV EASYOCR_MODULE_PATH=/app/.EasyOCR
17
- ENV EASYOCR_CACHE_DIR=/app/.EasyOCR
18
-
19
- # Create EasyOCR dir
20
- RUN mkdir -p /app/.EasyOCR && chmod -R 777 /app/.EasyOCR
21
 
22
- # Copy requirements first
23
  COPY requirements.txt .
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
24
 
25
- # Install Python dependencies
26
- RUN pip install --no-cache-dir -r requirements.txt
 
 
27
 
28
- # Pre-download EasyOCR English model
29
- RUN python3 -c "import easyocr; easyocr.Reader(['en'])"
 
30
 
31
- # Pre-download YOLOv8n model into /app
32
- RUN wget -O /app/yolov8n.pt https://github.com/ultralytics/assets/releases/download/v8.3.0/yolov8n.pt
33
 
34
- # Copy app code
35
  COPY . .
36
 
37
- # Expose port
38
  EXPOSE 7860
39
-
40
- # Run the app
41
  CMD ["uvicorn", "app:app", "--host", "0.0.0.0", "--port", "7860"]
 
1
+ FROM python:3.10-slim AS builder
2
 
3
+ ENV DEBIAN_FRONTEND=noninteractive
4
 
5
+ # Install build tools
6
  RUN apt-get update && apt-get install -y --no-install-recommends \
7
+ build-essential cmake git curl \
 
 
 
 
 
8
  && rm -rf /var/lib/apt/lists/*
9
 
10
+ WORKDIR /app
 
 
 
 
 
11
 
12
+ # Copy and install Python dependencies
13
  COPY requirements.txt .
14
+ RUN python -m venv /opt/venv && \
15
+ /opt/venv/bin/pip install --upgrade pip && \
16
+ /opt/venv/bin/pip install --no-cache-dir -r requirements.txt
17
+
18
+ # Pre-download YOLOv8 model weights into writable path
19
+ RUN mkdir -p /app/models && \
20
+ curl -L -o /app/models/yolov8n.pt \
21
+ https://github.com/ultralytics/assets/releases/download/v8.3.0/yolov8n.pt
22
+
23
+ # -------- RUNTIME IMAGE --------
24
+ FROM python:3.10-slim
25
+
26
+ ENV DEBIAN_FRONTEND=noninteractive
27
+ ENV PATH="/opt/venv/bin:$PATH"
28
+ ENV EASYOCR_MODULE_PATH=/app/.EasyOCR
29
+ ENV EASYOCR_CACHE_DIR=/app/.EasyOCR
30
+ ENV YOLO_CONFIG_DIR=/app/.yolo
31
 
32
+ # Install minimal OpenCV runtime dependencies
33
+ RUN apt-get update && apt-get install -y --no-install-recommends \
34
+ libgl1 libglib2.0-0 \
35
+ && rm -rf /var/lib/apt/lists/*
36
 
37
+ # Copy venv and preloaded model
38
+ COPY --from=builder /opt/venv /opt/venv
39
+ COPY --from=builder /app/models/yolov8n.pt /app/models/yolov8n.pt
40
 
41
+ # Create writable dirs for EasyOCR & YOLO configs
42
+ RUN mkdir -p /app/.EasyOCR /app/.yolo && chmod -R 777 /app/.EasyOCR /app/.yolo
43
 
44
+ WORKDIR /app
45
  COPY . .
46
 
 
47
  EXPOSE 7860
 
 
48
  CMD ["uvicorn", "app:app", "--host", "0.0.0.0", "--port", "7860"]