Spaces:
Sleeping
Sleeping
| FROM python:3.10-slim | |
| WORKDIR /app | |
| # Install system dependencies | |
| RUN apt-get update && apt-get install -y \ | |
| git \ | |
| wget \ | |
| gcc \ | |
| g++ \ | |
| libgeos-dev \ | |
| && rm -rf /var/lib/apt/lists/* | |
| # Create a non-root user | |
| RUN useradd -m -u 1000 appuser | |
| # Create directories and set permissions | |
| RUN mkdir -p /app/data /app/.config/matplotlib && \ | |
| chown -R appuser:appuser /app | |
| # Set environment variable for matplotlib | |
| ENV MPLCONFIGDIR=/app/.config/matplotlib | |
| # Install Python dependencies | |
| RUN pip install --no-cache-dir --upgrade pip | |
| # Install JAX without GPU support (for CPU-only deployment) | |
| RUN pip install --no-cache-dir \ | |
| "jax[cpu]" \ | |
| jaxlib | |
| # Install GraphCast and its dependencies | |
| RUN pip install --no-cache-dir \ | |
| numpy \ | |
| matplotlib \ | |
| xarray \ | |
| scipy \ | |
| dm-haiku \ | |
| optax \ | |
| cartopy \ | |
| google-cloud-storage \ | |
| ipywidgets \ | |
| pillow \ | |
| gradio>=4.0.0 \ | |
| git+https://github.com/deepmind/graphcast.git | |
| # Workaround for cartopy crashes due to the shapely installed by default | |
| # Same as the workaround in the original notebook | |
| RUN pip uninstall -y shapely && \ | |
| pip install shapely --no-binary shapely | |
| # Copy application code | |
| COPY app.py /app/ | |
| # Set environment variables | |
| ENV PYTHONUNBUFFERED=1 | |
| ENV GRADIO_SERVER_NAME=0.0.0.0 | |
| ENV GRADIO_SERVER_PORT=7860 | |
| # Expose port | |
| EXPOSE 7860 | |
| # Switch to non-root user | |
| USER appuser | |
| # Set command | |
| CMD ["python", "app.py"] |