khaterekhan / Dockerfile
Jahadona's picture
Update Dockerfile
b10b976 verified
# استفاده از یک ایمیج پایه پایتون 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