TrustOCR-Demo / Dockerfile
MohammadReza-Halakoo's picture
Update Dockerfile
6e426d3 verified
# ===== 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"]