Spaces:
Sleeping
Sleeping
# استفاده از یک ایمیج پایه پایتون 3.9 | |
# می توانید از نسخه های دیگر پایتون نیز استفاده کنید، مطمئن شوید که با نیازهای شما سازگار است. | |
FROM python:3.9 | |
# تنظیم دایرکتوری کاری در داخل کانتینر | |
WORKDIR /app | |
# کپی کردن فایل requirements.txt به دایرکتوری کاری | |
COPY requirements.txt . | |
# نصب وابستگی ها از requirements.txt | |
# --no-cache-dir برای جلوگیری از ذخیره سازی کش pip که حجم ایمیج را کم می کند. | |
RUN pip install --no-cache-dir -r requirements.txt | |
# ****** اضافه کردن دستورات برای تنظیم مسیر کش Sentence-Transformers ****** | |
# تنظیم متغیر محیطی برای تغییر مسیر کش به یک مسیر قابل نوشتن در داخل کانتینر (مثلاً در دایرکتوری app) | |
# این کار خطای Permission denied برای /.cache را رفع می کند. | |
ENV SENTENCE_TRANSFORMERS_HOME=/app/.cache/sentence_transformers | |
# ایجاد دایرکتوری کش با مجوزهای مناسب برای اطمینان از قابلیت نوشتن توسط کاربر کانتینر | |
# mkdir -p اگر دایرکتوری والد وجود نداشته باشد آن را ایجاد می کند. | |
# chmod -R 777 مجوز خواندن، نوشتن و اجرا را برای همه کاربران روی دایرکتوری و محتویات آن (پس از ایجاد) تنظیم می کند. | |
RUN mkdir -p /app/.cache/sentence_transformers && chmod -R 777 /app/.cache | |
# ********************************************************************** | |
# کپی کردن تمام فایل های پروژه از دایرکتوری فعلی (Space شما) به دایرکتوری کاری در کانتینر | |
# مطمئن شوید app.py و هر فایل JSON که نیاز دارید در دایرکتوری ریشه Space شما قرار دارند. | |
COPY . /app | |
# تعیین پورتی که برنامه در داخل کانتینر به آن گوش می دهد. | |
# Hugging Face Spaces به پورت 7860 نیاز دارد. | |
EXPOSE 7860 | |
# تعیین دستور اجرای برنامه هنگام راه اندازی کانتینر | |
# ما از Gunicorn به عنوان وب سرور برای اجرای اپلیکیشن Flask استفاده می کنیم. | |
# 'app:app' به Gunicorn می گوید که اپلیکیشن Flask با نام 'app' را در فایل 'app.py' پیدا کند. | |
CMD ["gunicorn", "--bind", "0.0.0.0:7860", "app:app"] | |
# در اینجا می توانید دستورات دیگری برای کپی کردن فایل های JSON نیز اضافه کنید | |
# اگر فایل های JSON شما در پوشه ریشه Space قرار دارند، دستور COPY . /app آنها را نیز کپی می کند. | |
# اگر در پوشه دیگری هستند، نیاز به COPY جداگانه دارید. | |
# مثال: اگر فایل های JSON در پوشه data هستند: | |
# COPY data /app/data |