mpg-api-supabase / Dockerfile
aephidayatuloh's picture
Upload Dockerfile
3ddacf1 verified
# ============================================================================
# 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')"]