# Gunakan image dasar Python yang ringan dan stabil # Python 3.9 adalah versi yang umum dan cocok dengan banyak pustaka AI FROM python:3.9-slim-buster # Atur direktori kerja di dalam container. # Semua operasi COPY dan RUN berikutnya akan dilakukan relatif terhadap direktori ini. WORKDIR /app # Salin file requirements.txt ke direktori kerja di container. # Melakukan ini terlebih dahulu memungkinkan Docker untuk melakukan caching layer # sehingga instalasi dependensi tidak perlu diulang jika hanya kode lain yang berubah. COPY requirements.txt . # Instal semua dependensi Python yang terdaftar di requirements.txt. # --no-cache-dir akan mencegah pip menyimpan cache unduhan, menghemat ruang. # -r requirements.txt membaca daftar paket dari file. RUN pip install --no-cache-dir -r requirements.txt # Salin semua file dan folder dari direktori lokal saat ini (root proyek kamu) # ke direktori kerja di dalam container (/app). # Ini termasuk main.py, model .h5, dan folder static/. COPY . . # Ekspos port yang akan digunakan aplikasi FastAPI kamu. # Hugging Face Spaces secara internal akan mengarahkan traffic ke port 7860. EXPOSE 7860 # Perintah untuk menjalankan aplikasi FastAPI kamu saat container dimulai. # "uvicorn" adalah server ASGI. # "main:app" berarti Uvicorn akan mencari objek bernama 'app' di file 'main.py'. # "--host 0.0.0.0" membuat aplikasi dapat diakses dari luar container. # "--port 7860" memastikan aplikasi mendengarkan pada port yang diharapkan oleh Hugging Face. CMD ["uvicorn", "main:app", "--host", "0.0.0.0", "--port", "7860"]