# βββββββββββββββββββββββββββ base image βββββββββββββββββββββββββββ | |
FROM python:3.11-slim | |
# ββββββββββββββββββββββββββ work directory ββββββββββββββββββββββββ | |
WORKDIR /app | |
# ββββββββββββββββββββ system deps (lean install) ββββββββββββββββββ | |
RUN apt-get update && apt-get install -y --no-install-recommends \ | |
build-essential \ | |
curl \ | |
git \ | |
&& rm -rf /var/lib/apt/lists/* | |
# βββββββββββββββββββββ python deps first for cache ββββββββββββββββ | |
COPY requirements.txt ./ | |
RUN pip3 install --no-cache-dir -r requirements.txt | |
# βββββββββββββββ download NLTK data into an app-local dir βββββββββ | |
ENV NLTK_DATA=/app/nltk_data | |
RUN mkdir -p ${NLTK_DATA} \ | |
&& python -m nltk.downloader -d ${NLTK_DATA} stopwords punkt | |
# ββββββββββββββββββββββββ copy source code ββββββββββββββββββββββββ | |
COPY src/ ./src/ | |
# βββββββββββββββββββββββββββ streamlit run ββββββββββββββββββββββββ | |
EXPOSE 8501 | |
HEALTHCHECK CMD curl --fail http://localhost:8501/_stcore/health || exit 1 | |
CMD ["streamlit", "run", "src/streamlit_app.py", "--server.port=8501", "--server.address=0.0.0.0"] |