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