Spaces:
Running
Running
Upload Dockerfile
Browse files- Dockerfile +39 -0
Dockerfile
ADDED
@@ -0,0 +1,39 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
# Dockerfile
|
2 |
+
|
3 |
+
# استفاده از یک ایمیج پایه پایتون
|
4 |
+
# این خط به Hugging Face میگوید که از یک نسخه رسمی پایتون بر پایه Debian (سبک) استفاده کند.
|
5 |
+
FROM python:3.9-slim-buster
|
6 |
+
|
7 |
+
# نصب FFmpeg و libopus-dev
|
8 |
+
# این دستورات ابزارهای لازم برای پردازش صدا و ویدیو را در محیط کانتینر نصب میکنند.
|
9 |
+
# `apt-get update` لیست بستههای موجود را بهروز میکند.
|
10 |
+
# `apt-get install -y` بستههای مشخص شده را نصب میکند (y به معنی Yes برای تایید نصب).
|
11 |
+
# `ffmpeg` ابزار اصلی پردازش صدا و ویدیو است.
|
12 |
+
# `libopus-dev` برای پشتیبانی از کدک Opus (ویسهای تلگرام) توسط pydub لازم است.
|
13 |
+
# `rm -rf /var/lib/apt/lists/*` فایلهای موقت دانلود شده را پاک میکند تا حجم ایمیج کم شود.
|
14 |
+
RUN apt-get update && apt-get install -y ffmpeg libopus-dev && rm -rf /var/lib/apt/lists/*
|
15 |
+
|
16 |
+
# تنظیم دایرکتوری کاری در کانتینر
|
17 |
+
# تمام عملیاتهای بعدی در داخل این پوشه انجام میشوند.
|
18 |
+
WORKDIR /app
|
19 |
+
|
20 |
+
# کپی کردن فایل requirements.txt و نصب کتابخانههای پایتون
|
21 |
+
# این کار بهینهتر است زیرا اگر فقط کد تغییر کند، لایههای قبلی کش (cache) میشوند و ساخت سریعتر میشود.
|
22 |
+
COPY requirements.txt .
|
23 |
+
RUN pip install --no-cache-dir -r requirements.txt
|
24 |
+
|
25 |
+
# کپی کردن تمام فایلهای پروژه (شامل app.py و channels.json) به داخل کانتینر
|
26 |
+
# `.` اول به معنی "همه فایلها و پوشههای موجود در دایرکتوری فعلی پروژه موبایل شما" است.
|
27 |
+
# `.` دوم به معنی "به دایرکتوری کاری فعلی در کانتینر (/app)" است.
|
28 |
+
COPY . .
|
29 |
+
|
30 |
+
# تنظیم پورت برای Flask
|
31 |
+
# Hugging Face Spaces معمولاً از پورت 7860 برای برنامههای وب استفاده میکند.
|
32 |
+
ENV PORT 7860
|
33 |
+
|
34 |
+
# دستور اجرای برنامه
|
35 |
+
# `CMD` دستوری است که هنگام شروع کانتینر اجرا میشود.
|
36 |
+
# `exec gunicorn` یک سرور وب پایتون است که برنامه Flask شما را اجرا میکند.
|
37 |
+
# `--bind 0.0.0.0:$PORT` به gunicorn میگوید که روی تمام آدرسهای شبکه و پورتی که در ENV PORT تنظیم شده، گوش دهد.
|
38 |
+
# `app:flask_app` به gunicorn میگوید که شیء `flask_app` را از فایل `app.py` اجرا کند.
|
39 |
+
CMD exec gunicorn --bind 0.0.0.0:$PORT app:flask_app
|