# ============================================================================ # Dockerfile untuk Deployment # ============================================================================ FROM rocker/r-ver:4.5.0 # Install system dependencies # Pasang dependensi sistem Linux yang dibutuhkan RUN apt-get update && apt-get install -y \ libcurl4-openssl-dev \ libssl-dev \ libxml2-dev \ libfontconfig1-dev \ libharfbuzz-dev \ libfribidi-dev \ libfreetype6-dev \ libpng-dev \ libtiff5-dev \ libjpeg-dev \ cmake \ libpq-dev \ && rm -rf /var/lib/apt/lists/* # Set working directory WORKDIR /app # Install R packages # RUN R -e "install.packages(c( \ # 'tidymodels', \ # 'vetiver', \ # 'pins', \ # 'plumber', \ # 'ranger', \ # 'httr', \ # 'jsonlite', \ # 'dplyr', \ # 'ggplot2' \ # ), repos='https://cloud.r-project.org/')" # 5. Salin semua file dari proyek lokal Anda ke dalam kontainer COPY . . # COPY renv.lock ./ # RUN R -e "install.packages('renv'); renv::restore()" # Pasang paket R versi biner (Cepat dan Anti-Gagal Kompilasi) # Kita menggunakan repositori 'noble' karena rocker:4.5.0 berbasis Ubuntu 24.04 RUN R -e "options(repos = c(CRAN = 'https://packagemanager.posit.co/cran/__linux__/noble/latest')); install.packages(c('plumber', 'vetiver', 'pins', 'DBI', 'RPostgres', 'jsonlite', 'dotenv', 'purrr', 'dplyr', 'ranger', 'tidymodels', 'httr2'))" # 6. Atur hak akses agar kontainer bisa menulis file (misal saat mengunduh model) RUN chmod -R 777 /app # 7. Berikan instruksi port dinamis (Hugging Face default adalah 7860) ENV PORT=7860 EXPOSE 7860 # 8. Jalankan eksekusi API Server menggunakan skrip yang sudah kita buat CMD ["R", "-e", "source('run_backend.R')"]