# 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"]