emailpadu / Dockerfile
Pikeuli's picture
Update Dockerfile
e8258cd verified
Raw
History Blame Contribute Delete
1.29 kB
# 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"]