File size: 1,830 Bytes
e972379
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
3ddacf1
e972379
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
# ============================================================================
# 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')"]