File size: 1,289 Bytes
ef9e07c
 
22c7e25
ef9e07c
 
 
 
 
 
 
 
 
22c7e25
ef9e07c
 
4c7f849
ef9e07c
22c7e25
ef9e07c
 
7b3a30e
22c7e25
ef9e07c
22c7e25
 
ef9e07c
 
 
 
 
 
 
7b3a30e
22c7e25
ef9e07c
 
e8258cd
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
# 1. Guna versi Python yang stabil, ringan dan moden (Python 3.12/3.13)
FROM python:3.12-slim-bookworm

# 2. Tetapan Environment Variables untuk prestasi Python dalam container
# Halang Python tulis fail .pyc (jimat ruang)
ENV PYTHONDONTWRITEBYTECODE=1
# Pastikan log terus keluar ke terminal tanpa sangkut dalam buffer
ENV PYTHONUNBUFFERED=1

# 3. [Sekuriti] Cipta pengguna "non-root"
# Sangat penting untuk cloud moden seperti HF Spaces yang melarang penggunaan root
RUN useradd -m -u 1000 appuser

# 4. Tetapkan direktori kerja
WORKDIR /app

# 5. Salin fail requirements dahulu (untuk cache layer Docker yang lebih laju)
COPY requirements.txt .

# 6. Install pustaka Python tanpa simpan cache (kecilkan saiz imej akhir)
RUN pip install --no-cache-dir -r requirements.txt

# 7. Salin semua kod yang tinggal ke dalam container
COPY . .

# 8. Berikan hak milik folder /app kepada appuser
RUN chown -R appuser:appuser /app

# 9. Tukar kepada pengguna yang selamat
USER appuser

# 10. Buka port 7860 (Port standard untuk Hugging Face Spaces)
EXPOSE 7860

# 11. Jalankan aplikasi menggunakan Gunicorn (Production Server)
# --workers 2 dan --threads 4 sangat sesuai untuk API yang ada ThreadPoolExecutor
CMD ["gunicorn", "app:app", "--workers", "2", "--threads", "4", "--bind", "0.0.0.0:7860"]