File size: 1,205 Bytes
67b65ce
 
7496e17
67b65ce
 
 
 
7496e17
67b65ce
 
7496e17
 
67b65ce
7496e17
 
67b65ce
 
 
 
 
 
7496e17
67b65ce
 
 
7496e17
67b65ce
7496e17
 
67b65ce
 
 
7496e17
67b65ce
 
 
 
 
 
 
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
# βœ… Gunakan Python 3.10 (versi stabil & didukung Streamlit)
FROM python:3.10-slim

# Non-interactive mode
ENV DEBIAN_FRONTEND=noninteractive \
    PYTHONUNBUFFERED=1 \
    PYTHONDONTWRITEBYTECODE=1

# Install deps minimal (tanpa build-essential berat)
RUN apt-get update && apt-get install -y --no-install-recommends \
    curl \
    git \
    libgl1 \
    && rm -rf /var/lib/apt/lists/*

# Set workdir
WORKDIR /app

# Salin requirements & install
COPY requirements.txt .
RUN pip install --no-cache-dir -r requirements.txt

# Salin file app (langsung di root β€” bukan src/)
COPY app.py .
COPY df_final.xlsx .

# Port Streamlit (HF pakai 7860 atau 8501 β€” keduanya oke)
EXPOSE 8501

# βœ… HEALTHCHECK aman: gunakan python, bukan curl
HEALTHCHECK --interval=30s --timeout=5s --start-period=60s --retries=3 \
    CMD python -c "import urllib.request; urllib.request.urlopen('http://localhost:8501/_stcore/health', timeout=3)"

# βœ… ENTRYPOINT: tambahkan opsi headless & server address
ENTRYPOINT ["streamlit", "run", "app.py", \
    "--server.port=8501", \
    "--server.address=0.0.0.0", \
    "--server.headless=true", \
    "--browser.serverAddress=0.0.0.0", \
    "--browser.gatherUsageStats=false"]