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