MohammadReza-Halakoo commited on
Commit
270a6f5
·
verified ·
1 Parent(s): aac01c3

Update Dockerfile

Browse files
Files changed (1) hide show
  1. Dockerfile +24 -32
Dockerfile CHANGED
@@ -1,58 +1,50 @@
1
- # ===== Dockerfile نهایی برای HF Spaces / Streamlit =====
2
  FROM python:3.11-slim
3
 
4
  WORKDIR /app
5
 
6
- # محیط‌های لازم
7
- ENV HOME=/app \
 
 
 
 
8
  STREAMLIT_BROWSER_GATHER_USAGE_STATS=false \
9
  STREAMLIT_TELEMETRY_OPT_OUT=true \
10
- HF_HOME=/tmp/hf_home \
11
- TRANSFORMERS_ATTENTION_IMPLEMENTATION=eager
12
 
13
- # دیپندنسی‌های سیستمی: OpenCV + Tesseract (با فارسی) + ابزار Build
14
  RUN apt-get update && apt-get install -y --no-install-recommends \
15
- build-essential \
16
- curl \
17
- git \
18
- libgl1 \
19
- libglib2.0-0 \
20
- tesseract-ocr \
21
- tesseract-ocr-fas \
22
- libtesseract-dev \
23
  && rm -rf /var/lib/apt/lists/*
24
 
25
- # دایرکتوری‌های قابل‌نوشتن برای Streamlit/HF
26
- RUN mkdir -p /app/.streamlit /tmp/.streamlit /tmp/hf_home && \
27
- chmod -R 777 /app/.streamlit /tmp/.streamlit /tmp/hf_home
28
 
29
- # نصب پایتون‌پکیج‌ها (نسخه‌ها pinned برای سازگاری با surya_order)
30
  COPY requirements.txt ./
31
  RUN python -m pip install --upgrade pip setuptools wheel && \
32
  pip install --no-cache-dir -r requirements.txt
33
 
34
- # تنظیمات Streamlit: خاموش کردن XSRF/CORS و افزایش سقف آپلود
35
- RUN printf "[server]\n\
36
- headless = true\n\
37
- enableXsrfProtection = false\n\
38
- enableCORS = false\n\
39
- maxUploadSize = 200\n\n\
40
- [browser]\n\
41
- gatherUsageStats = false\n" > /app/.streamlit/config.toml
42
 
43
- # کپی کل پروژه (app.py و …)
44
  COPY . .
45
 
46
  # ---- تنظیم مدل شخصی (یکی را انتخاب کن) ----
47
- # (A) مسیر محلی baked-in (پوشه را در ./models/TrustOCR کپی کن)
48
  # ENV TRUSTOCR_PATH=/app/models/TrustOCR
49
- # (B) ریپوی خصوصی HF (توکن را در Secrets ست کن)
 
 
50
  # ENV TRUSTOCR_REPO=MohammadReza-Halakoo/TrustOCR
51
- # ENV HUGGINGFACE_HUB_TOKEN=hf_xxx
52
 
53
- # پورت (روی HF معمولاً PORT ست می‌شود؛ پیش‌فرض 8501)
54
  EXPOSE 8501
55
  HEALTHCHECK CMD curl --fail http://localhost:${PORT:-8501}/_stcore/health || exit 1
56
 
57
- # اجرای Streamlit (PORT را از محیط می‌گیرد)
58
  ENTRYPOINT ["bash","-lc","streamlit run app.py --server.port=${PORT:-8501} --server.address=0.0.0.0"]
 
1
+ # ===== Dockerfile نهایی برای HF Spaces / Streamlit (با مدل شخصی) =====
2
  FROM python:3.11-slim
3
 
4
  WORKDIR /app
5
 
6
+ # Env های ضروری و کش‌ها روی /tmp (قابل‌نوشتن)
7
+ ENV HOME=/tmp \
8
+ HF_HOME=/tmp/hf_home \
9
+ TRANSFORMERS_CACHE=/tmp/hf_home \
10
+ STREAMLIT_CONFIG_DIR=/tmp/.streamlit \
11
+ STREAMLIT_RUNTIME_DIR=/tmp/.streamlit \
12
  STREAMLIT_BROWSER_GATHER_USAGE_STATS=false \
13
  STREAMLIT_TELEMETRY_OPT_OUT=true \
14
+ # برای جلوگیری از backend=sdpa که با Surya ordering ناسازگاره
15
+ TRANSFORMERS_ATTENTION_BACKEND=eager
16
 
17
+ # سیستم‌دیپندنسی‌ها: OpenCV + Tesseract (با فارسی) + ابزار Build
18
  RUN apt-get update && apt-get install -y --no-install-recommends \
19
+ build-essential curl git libgl1 libglib2.0-0 \
20
+ tesseract-ocr tesseract-ocr-fas libtesseract-dev \
 
 
 
 
 
 
21
  && rm -rf /var/lib/apt/lists/*
22
 
23
+ # دایرکتوری‌های قابل‌نوشتن
24
+ RUN mkdir -p /tmp/.streamlit /tmp/hf_home && chmod -R 777 /tmp
 
25
 
26
+ # پایتون‌دیپندنسی‌ها
27
  COPY requirements.txt ./
28
  RUN python -m pip install --upgrade pip setuptools wheel && \
29
  pip install --no-cache-dir -r requirements.txt
30
 
31
+ # کانفیگ Streamlit (غیرفعال کردن XSRF/CORS و افزایش سقف آپلود)
32
+ RUN printf "[server]\nheadless=true\nenableXsrfProtection=false\nenableCORS=false\nmaxUploadSize=200\n\n[browser]\ngatherUsageStats=false\n" > /tmp/.streamlit/config.toml
 
 
 
 
 
 
33
 
34
+ # کپی پروژه
35
  COPY . .
36
 
37
  # ---- تنظیم مدل شخصی (یکی را انتخاب کن) ----
38
+ # (A) اگر فولدر مدل را داخل ایمیج کپی می‌کنی:
39
  # ENV TRUSTOCR_PATH=/app/models/TrustOCR
40
+ # (فولدر را در کنار همین Dockerfile اضافه کن)
41
+ #
42
+ # (B) اگر مدل در ریپوی خصوصی HF است:
43
  # ENV TRUSTOCR_REPO=MohammadReza-Halakoo/TrustOCR
44
+ # و در Secrets فضای HF، مقدار HUGGINGFACE_HUB_TOKEN را ست کن.
45
 
 
46
  EXPOSE 8501
47
  HEALTHCHECK CMD curl --fail http://localhost:${PORT:-8501}/_stcore/health || exit 1
48
 
49
+ # اجرای Streamlit
50
  ENTRYPOINT ["bash","-lc","streamlit run app.py --server.port=${PORT:-8501} --server.address=0.0.0.0"]