Spaces:
Running
on
CPU Upgrade
Running
on
CPU Upgrade
# Use Python 3.11 slim image for smaller size | |
FROM python:3.11-slim | |
# Set working directory | |
WORKDIR /app | |
# Install system dependencies required for geospatial libraries | |
RUN apt-get update && apt-get install -y \ | |
gcc \ | |
g++ \ | |
libgeos-dev \ | |
libproj-dev \ | |
proj-data \ | |
proj-bin \ | |
libgdal-dev \ | |
gdal-bin \ | |
libspatialindex-dev \ | |
&& rm -rf /var/lib/apt/lists/* | |
# Copy requirements first for better Docker layer caching | |
COPY requirements.txt . | |
# Install Python dependencies | |
RUN pip install --no-cache-dir -r requirements.txt | |
# Copy application files | |
COPY . . | |
# Create a non-root user for security | |
RUN useradd -m -u 1000 streamlit && \ | |
chown -R streamlit:streamlit /app | |
USER streamlit | |
# Expose port | |
EXPOSE 8501 | |
# Set environment variables for Streamlit | |
ENV STREAMLIT_SERVER_PORT=8501 | |
ENV STREAMLIT_SERVER_ADDRESS=0.0.0.0 | |
ENV STREAMLIT_SERVER_HEADLESS=true | |
ENV STREAMLIT_SERVER_ENABLE_CORS=false | |
ENV STREAMLIT_SERVER_ENABLE_XSRF_PROTECTION=false | |
# Health check | |
HEALTHCHECK --interval=30s --timeout=30s --start-period=5s --retries=3 \ | |
CMD curl -f http://localhost:8501/_stcore/health || exit 1 | |
# Run the application | |
CMD ["streamlit", "run", "app.py", "--server.port=8501", "--server.address=0.0.0.0"] | |