ezmarynoori commited on
Commit
68ff7b8
·
verified ·
1 Parent(s): 8c2ab23

Create Dockerfile

Browse files
Files changed (1) hide show
  1. Dockerfile +48 -0
Dockerfile ADDED
@@ -0,0 +1,48 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # استفاده از نسخه سبک پایتون 3.9
2
+ FROM python:3.9-slim
3
+
4
+ # تنظیم متغیرهای محیطی برای جلوگیری از ایجاد فایل‌های pyc و بافر شدن خروجی
5
+ ENV PYTHONDONTWRITEBYTECODE=1 \
6
+ PYTHONUNBUFFERED=1
7
+
8
+ # 1. نصب پیش‌نیازهای سیستمی (بسیار مهم برای WeasyPrint)
9
+ # WeasyPrint برای تبدیل HTML به PDF به کتابخانه‌های گرافیکی لینوکس نیاز دارد
10
+ RUN apt-get update && apt-get install -y \
11
+ build-essential \
12
+ python3-dev \
13
+ python3-pip \
14
+ python3-setuptools \
15
+ python3-wheel \
16
+ python3-cffi \
17
+ libcairo2 \
18
+ libpango-1.0-0 \
19
+ libpangocairo-1.0-0 \
20
+ libgdk-pixbuf2.0-0 \
21
+ libffi-dev \
22
+ shared-mime-info \
23
+ fontconfig \
24
+ && apt-get clean && rm -rf /var/lib/apt/lists/*
25
+
26
+ # 2. تنظیم کاربر (Hugging Face Spaces به صورت پیش‌فرض با کاربر 1000 اجرا می‌شود)
27
+ RUN useradd -m -u 1000 user
28
+ USER user
29
+ ENV HOME=/home/user \
30
+ PATH=/home/user/.local/bin:$PATH
31
+
32
+ # تنظیم دایرکتوری کاری
33
+ WORKDIR $HOME/app
34
+
35
+ # 3. کپی کردن فایل requirements و نصب کتابخانه‌های پایتون
36
+ COPY --chown=user requirements.txt requirements.txt
37
+ RUN pip install --no-cache-dir --upgrade pip && \
38
+ pip install --no-cache-dir -r requirements.txt
39
+
40
+ # 4. کپی کردن کل فایل‌های پروژه به داخل کانتینر
41
+ COPY --chown=user . .
42
+
43
+ # 5. باز کردن پورت 7860 (پورت استاندارد هاگینگ فیس)
44
+ EXPOSE 7860
45
+
46
+ # 6. اجرای برنامه با استفاده از Gunicorn
47
+ # نکته: app:app به معنی فایل app.py و متغیر app داخل آن است
48
+ CMD ["gunicorn", "-b", "0.0.0.0:7860", "app:app"]