Spaces:
Running
Running
File size: 2,342 Bytes
58f76b4 67e22a5 58f76b4 67e22a5 58f76b4 67e22a5 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 | # --- START OF Dockerfile ---
# مرحله ۱: انتخاب ایمیج پایه
# از یک ایمیج رسمی و سبک پایتون استفاده میکنیم تا حجم نهایی کانتینر کم باشد.
FROM python:3.11-slim
# تنظیم متغیرهای محیطی برای عملکرد بهتر پایتون در داکر
ENV PYTHONDONTWRITEBYTECODE 1
ENV PYTHONUNBUFFERED 1
# تنظیم تعداد تردهای (Threads) پسزمینه برای FastAPI روی ۸
ENV ANYIO_MAX_THREADS 8
# مرحله ۲: تنظیم دایرکتوری کاری
# تمام دستورات بعدی در این مسیر داخل کانتینر اجرا خواهند شد.
WORKDIR /app
# مرحله ۳: کپی و نصب نیازمندیها
# ابتدا فقط فایل نیازمندیها را کپی میکنیم. این کار به داکر اجازه میدهد
# تا از لایه کش شده استفاده کند و در صورت تغییر نکردن این فایل،
# مراحل نصب را دوباره انجام ندهد و سرعت ساخت ایمیج بالا برود.
COPY requirements.txt .
# نصب کتابخانهها با استفاده از pip
# --no-cache-dir: از ذخیره کش pip جلوگیری میکند تا حجم ایمیج کمتر شود.
RUN pip install --no-cache-dir -r requirements.txt
# مرحله ۴: کپی کردن سورس کد برنامه
# حالا تمام فایلهای پروژه (app.py, پوشه templates و ...) را به دایرکتوری کاری کپی میکنیم.
COPY . .
# مرحله ۵: باز کردن پورت
# به داکر اعلام میکنیم که این کانتینر روی پورت 7860 گوش میدهد.
# این پورت استاندارد هاگینگ فیس برای Gradio و اپلیکیشنهای مشابه است.
EXPOSE 7860
# مرحله ۶: دستور اجرا
# دستوری که هنگام استارت شدن کانتینر اجرا میشود.
# uvicorn را برای اجرای اپلیکیشن FastAPI خود فراخوانی میکنیم.
# --workers 4: تعداد کارگرها را برای استفاده از حداکثر توان پردازنده افزایش دادیم.
CMD ["uvicorn", "app:app", "--host", "0.0.0.0", "--port", "7860", "--workers", "4"]
# --- END OF Dockerfile ---
|