# --- START OF Dockerfile --- # مرحله ۱: انتخاب ایمیج پایه # از یک ایمیج رسمی و سبک پایتون استفاده می‌کنیم تا حجم نهایی کانتینر کم باشد. FROM python:3.11-slim # تنظیم متغیرهای محیطی برای عملکرد بهتر پایتون در داکر ENV PYTHONDONTWRITEBYTECODE 1 ENV PYTHONUNBUFFERED 1 # مرحله ۲: تنظیم دایرکتوری کاری # تمام دستورات بعدی در این مسیر داخل کانتینر اجرا خواهند شد. 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 خود فراخوانی می‌کنیم. # --host 0.0.0.0: باعث می‌شود اپلیکیشن از خارج کانتینر قابل دسترس باشد. CMD ["uvicorn", "app:app", "--host", "0.0.0.0", "--port", "7860"] # --- END OF Dockerfile ---