| FROM node:20 | |
| # 1. Menambahkan variabel lingkungan untuk mencegah prompt interaktif saat instalasi | |
| ENV DEBIAN_FRONTEND=noninteractive | |
| WORKDIR /app | |
| # 2. Instal FFmpeg, ImageMagick, dan utilitas penting lainnya | |
| # - FFmpeg: Untuk pemrosesan video, audio, dan beberapa konversi gambar. | |
| # - imagemagick: Utilitas baris perintah yang sangat baik untuk manipulasi gambar. | |
| # - build-essential: Diperlukan untuk mengkompilasi modul Node.js yang memiliki binding C/C++ (node-gyp). | |
| # - git: Sudah ada di kode Anda, tapi saya biarkan di sini. | |
| # - libtool, automake, autoconf: Berguna jika Anda perlu mengkompilasi paket dari source. | |
| # - ca-certificates: Penting untuk memastikan permintaan HTTPS bekerja dengan benar. | |
| RUN apt-get update \ | |
| && apt-get install -y \ | |
| ffmpeg \ | |
| imagemagick \ | |
| build-essential \ | |
| git \ | |
| libtool \ | |
| automake \ | |
| autoconf \ | |
| ca-certificates \ | |
| && rm -rf /var/lib/apt/lists/* | |
| # 3. Hapus variabel lingkungan untuk clean-up (opsional) | |
| ENV DEBIAN_FRONTEND= | |
| # Set folder ownership agar npm bisa install | |
| RUN chown -R node:node /app | |
| USER node | |
| # Copy script start.sh | |
| COPY start.sh . | |
| # Copy package.json dan package-lock.json (praktik terbaik untuk caching layer) | |
| # Jika Anda tidak melakukan install di Dockerfile ini, Anda bisa mengabaikannya | |
| # COPY package*.json ./ | |
| # Expose port | |
| EXPOSE 7860 | |
| # Jalankan script tanpa chmod | |
| CMD ["bash", "start.sh"] |