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