FROM python:3.12-slim ENV PIP_NO_CACHE_DIR=1 \ PYTHONDONTWRITEBYTECODE=1 \ PYTHONUNBUFFERED=1 # App root WORKDIR /app # System deps RUN apt-get update && apt-get install -y --no-install-recommends \ build-essential \ curl \ git \ && rm -rf /var/lib/apt/lists/* # Python deps first (better layer caching) COPY requirements.txt ./ RUN pip install --upgrade pip setuptools wheel \ && pip install --prefer-binary -r requirements.txt # App code and model COPY src/ ./src/ COPY classifier.pkl ./src/ EXPOSE 8501 # Healthcheck HEALTHCHECK --interval=30s --timeout=3s --retries=3 \ CMD curl --fail http://localhost:8501/_stcore/health || exit 1 # Run from /app/src so relative paths resolve (classifier.pkl) WORKDIR /app/src ENTRYPOINT ["streamlit", "run", "streamlit_app.py", "--server.port=8501", "--server.address=0.0.0.0"]