reyhanadr's picture
Redirect cache to /tmp to solve final permission error
abf6e68
# Tahap 1: Base Image
# Kita mulai dari image resmi Python versi 3.10.
# Menggunakan versi 'slim' agar ukurannya lebih kecil dan efisien.
FROM python:3.10-slim
# Tahap 2: Set Working Directory
# Menetapkan direktori kerja di dalam container ke /app.
# Semua perintah selanjutnya akan dijalankan dari direktori ini.
WORKDIR /app
# Mengatur environment variable untuk cache Hugging Face.
# Ini memberitahu library transformers untuk menyimpan model yang diunduh
# ke dalam direktori /app/cache, yang pasti bisa ditulis oleh aplikasi.
ENV HF_HOME /tmp/cache
# Secara eksplisit membuat direktori cache dan memberikan izin tulis penuh.
# mkdir -p: membuat folder /app/cache
# chmod -R 777: memberikan izin baca, tulis, eksekusi untuk semua user di dalam container.
RUN mkdir -p /tmp/cache && chmod -R 777 /tmp/cache
# ------------------------------------
# Tahap 3: Instalasi Dependensi
# Pertama, salin hanya file requirements.txt untuk caching.
# Ini adalah optimasi: Docker tidak akan menginstal ulang dependensi
# jika file requirements.txt tidak berubah, membuat build lebih cepat.
COPY requirements.txt .
RUN pip install --no-cache-dir -r requirements.txt
# Tahap 4: Salin Kode Aplikasi dan Model
# Setelah dependensi terinstal, salin sisa file proyek.
# Ini termasuk app.py dan folder model Anda.
COPY . .
# Tahap 5: Jalankan Aplikasi
# Memberi tahu container perintah apa yang harus dijalankan saat startet.
# Ini akan menjalankan server Uvicorn untuk aplikasi FastAPI Anda,
# membuatnya bisa diakses dari luar di port 7860 (port default HF Spaces).
CMD ["uvicorn", "main:app", "--host", "0.0.0.0", "--port", "7860"]