File size: 2,184 Bytes
58f76b4 | 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 | # --- 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 --- |