Spaces:
Sleeping
Sleeping
| FROM python:3.11-slim | |
| WORKDIR /app | |
| # Create a non-root user | |
| RUN useradd -m -u 1000 streamlit | |
| # Create directories with proper ownership | |
| RUN mkdir -p /tmp/.streamlit /tmp/.config/matplotlib /app/uploads && \ | |
| chown -R streamlit:streamlit /tmp/.streamlit /tmp/.config/matplotlib /app && \ | |
| chmod -R 755 /tmp/.streamlit /tmp/.config/matplotlib /app | |
| # Set environment variables | |
| ENV HOME=/tmp | |
| ENV STREAMLIT_CONFIG_DIR=/tmp/.streamlit | |
| ENV MPLCONFIGDIR=/tmp/.config/matplotlib | |
| ENV STREAMLIT_SERVER_MAX_UPLOAD_SIZE=200 | |
| ENV STREAMLIT_SERVER_ENABLE_CORS=false | |
| ENV STREAMLIT_SERVER_ENABLE_XSRF_PROTECTION=false | |
| # Install system dependencies | |
| RUN apt-get update && apt-get install -y \ | |
| build-essential \ | |
| curl \ | |
| software-properties-common \ | |
| git \ | |
| && rm -rf /var/lib/apt/lists/* | |
| # Upgrade pip | |
| RUN pip3 install --upgrade pip | |
| # Copy and install Python dependencies | |
| COPY requirements.txt ./requirements.txt | |
| RUN pip3 install -r requirements.txt | |
| # Copy source code | |
| COPY src/ ./src/ | |
| RUN chown -R streamlit:streamlit /app | |
| # Switch to non-root user | |
| USER streamlit | |
| EXPOSE 8501 | |
| HEALTHCHECK CMD curl --fail http://localhost:8501/_stcore/health | |
| # Create Streamlit config file | |
| RUN echo '[server]\n\ | |
| maxUploadSize = 200\n\ | |
| enableCORS = false\n\ | |
| enableXsrfProtection = false\n\ | |
| \n\ | |
| [browser]\n\ | |
| gatherUsageStats = false\n\ | |
| \n\ | |
| [theme]\n\ | |
| base = "light"' > /tmp/.streamlit/config.toml | |
| ENTRYPOINT ["streamlit", "run", "src/streamlit_app.py", \ | |
| "--server.port=8501", \ | |
| "--server.address=0.0.0.0"] |