| FROM node:24-alpine | |
| # Set user ke root agar memiliki akses untuk mengubah /etc/resolv.conf | |
| USER root | |
| # Install system dependencies yang dibutuhkan Streamflow (terutama ffmpeg) | |
| RUN apk add --no-cache \ | |
| git python3 make g++ build-base \ | |
| ffmpeg wget tzdata | |
| # Set environment variables | |
| # Hugging Face Space mendengarkan port 7860 secara default | |
| ENV PORT=7860 | |
| ENV HOST=0.0.0.0 | |
| # Buat dan set direktori kerja | |
| WORKDIR /app | |
| # Clone repository Streamflow langsung dari GitHub | |
| RUN git clone https://github.com/bangtutorial/streamflow.git . | |
| # Install dependensi Node.js untuk Streamflow | |
| RUN npm install | |
| # Berikan izin akses penuh ke direktori kerja agar tidak ada isu permission di HF | |
| RUN chmod -R 777 /app | |
| # --- BAGIAN KRUSIAL: SCRIPT DNS --- | |
| # Membuat script untuk mengganti DNS sebelum menjalankan Streamflow | |
| RUN printf '#!/bin/sh\n\ | |
| echo "nameserver 8.8.8.8" > /etc/resolv.conf\n\ | |
| echo "nameserver 8.8.4.4" >> /etc/resolv.conf\n\ | |
| echo "DNS successfully set to Google DNS (8.8.8.8)"\n\ | |
| # Mengeksekusi Streamflow\n\ | |
| exec npm start\n' > /docker-entrypoint.sh && \ | |
| chmod +x /docker-entrypoint.sh | |
| # Expose port yang digunakan | |
| EXPOSE 7860 | |
| # Jalankan via script injeksi DNS | |
| ENTRYPOINT ["/bin/sh", "/docker-entrypoint.sh"] |