| FROM python:3.10-slim |
|
|
| ENV DEBIAN_FRONTEND=noninteractive |
| ENV PYTHONDONTWRITEBYTECODE=1 |
| ENV PYTHONUNBUFFERED=1 |
|
|
| ENV GRADIO_SERVER_NAME=0.0.0.0 |
| ENV GRADIO_SERVER_PORT=7860 |
|
|
| # System deps: R + compilers + common R pkg build deps |
| RUN apt-get update && apt-get install -y --no-install-recommends \ |
| r-base \ |
| r-base-dev \ |
| build-essential \ |
| curl \ |
| git \ |
| libcurl4-openssl-dev \ |
| libssl-dev \ |
| libxml2-dev \ |
| && rm -rf /var/lib/apt/lists/* |
|
|
| # Install required R packages |
| RUN R -e "install.packages(c('forecast','ggplot2','jsonlite','readr','dplyr','tidyr','stringr','lubridate','broom'), repos='https://cloud.r-project.org')" |
|
|
| WORKDIR /app |
| COPY . /app |
|
|
| # Python deps (from requirements.txt) |
| RUN pip install --no-cache-dir -r requirements.txt |
|
|
| # Notebook execution deps |
| RUN pip install --no-cache-dir notebook ipykernel papermill |
|
|
| # Pre-install packages that the notebooks install via !pip install |
| # so papermill doesn't waste time or fail on them at runtime: |
| # datacreation.ipynb: beautifulsoup4 pandas matplotlib seaborn numpy textblob |
| # pythonanalysis.ipynb: pandas matplotlib seaborn numpy textblob faker transformers vaderSentiment |
| # Most are already in requirements.txt; add the extras: |
| RUN pip install --no-cache-dir textblob faker transformers |
|
|
| RUN python -m ipykernel install --user --name python3 --display-name "Python 3" |
|
|
| # R deps for notebook execution via papermill (IRkernel) |
| RUN R -e "install.packages('IRkernel', repos='https://cloud.r-project.org/')" |
| RUN R -e "IRkernel::installspec(user = FALSE)" |
|
|
| EXPOSE 7860 |
|
|
| CMD ["python", "app.py"] |
|
|