# ===== Dockerfile برای HF Spaces / Streamlit (با مدل شخصی) ===== FROM python:3.11-slim WORKDIR /app # Env های ضروری و کش‌ها روی /tmp (قابل‌نوشتن) ENV HOME=/tmp \ HF_HOME=/tmp/hf_home \ TRANSFORMERS_CACHE=/tmp/hf_home \ STREAMLIT_CONFIG_DIR=/tmp/.streamlit \ STREAMLIT_RUNTIME_DIR=/tmp/.streamlit \ STREAMLIT_BROWSER_GATHER_USAGE_STATS=false \ STREAMLIT_TELEMETRY_OPT_OUT=true \ TRANSFORMERS_ATTENTION_BACKEND=eager \ STREAMLIT_STATIC_DIR=/tmp/streamlit_static \ MPLCONFIGDIR=/tmp/mpl # سیستم‌دیپندنسی‌ها: OpenCV + Tesseract (با فارسی) + ابزار Build RUN apt-get update && apt-get install -y --no-install-recommends \ build-essential curl git libgl1 libglib2.0-0 \ tesseract-ocr tesseract-ocr-fas libtesseract-dev \ && rm -rf /var/lib/apt/lists/* # دایرکتوری‌های قابل‌نوشتن RUN mkdir -p /tmp/.streamlit /tmp/hf_home /tmp/streamlit_static /tmp/mpl && chmod -R 777 /tmp # پایتون‌دیپندنسی‌ها COPY requirements.txt ./ RUN python -m pip install --upgrade pip setuptools wheel && \ pip install --no-cache-dir -r requirements.txt # کانفیگ Streamlit (غیرفعال کردن XSRF/CORS و افزایش سقف آپلود) RUN printf "[server]\nheadless=true\nenableXsrfProtection=false\nenableCORS=false\nmaxUploadSize=200\n\n[browser]\ngatherUsageStats=false\n" > /tmp/.streamlit/config.toml # کپی پروژه COPY . . # ---- تنظیم مدل شخصی (یکی را انتخاب کن) ---- # (A) اگر فولدر مدل را داخل ایمیج کپی می‌کنی: # ENV TRUSTOCR_PATH=/app/models/TrustOCR # (فولدر را در کنار همین Dockerfile اضافه کن) # # (B) اگر مدل در ریپوی خصوصی HF است: # ENV TRUSTOCR_REPO=MohammadReza-Halakoo/TrustOCR # و در Secrets فضای HF، مقدار HUGGINGFACE_HUB_TOKEN را ست کن. EXPOSE 8501 HEALTHCHECK CMD curl --fail http://localhost:${PORT:-8501}/_stcore/health || exit 1 # اجرای Streamlit ENTRYPOINT ["bash","-lc","streamlit run app.py --server.port=${PORT:-8501} --server.address=0.0.0.0"]