FROM python:3.9-slim WORKDIR /app # Install comprehensive system dependencies for pygrib and GRIB processing RUN apt-get update && apt-get install -y \ libeccodes-dev \ libproj-dev \ libgeos-dev \ libjpeg-dev \ libpng-dev \ libopenjp2-7-dev \ libaec-dev \ libnetcdf-dev \ libhdf5-dev \ libhdf5-serial-dev \ zlib1g-dev \ cmake \ pkg-config \ gcc \ g++ \ gfortran \ build-essential \ python3-dev \ cython3 \ libssl-dev \ libffi-dev \ libbz2-dev \ liblzma-dev \ curl \ wget \ git \ && rm -rf /var/lib/apt/lists/* # Set critical environment variables for eccodes and pygrib ENV ECCODES_DIR=/usr ENV ECCODES_DEFINITION_PATH=/usr/share/eccodes/definitions # Create non-root user for Hugging Face Spaces RUN useradd -m -u 1000 user USER user ENV HOME=/home/user \ PATH=/home/user/.local/bin:$PATH WORKDIR $HOME/app # Copy requirements and install Python packages COPY --chown=user requirements.txt . # Install Python packages (pygrib is the key for real Arctic extraction) RUN pip install --no-cache-dir --user -r requirements.txt # Copy application files COPY --chown=user . . # Expose port 7860 for Hugging Face Spaces EXPOSE 7860 # Set environment variables for the application ENV PYTHONPATH="${PYTHONPATH}:${HOME}/app" ENV GRADIO_SERVER_NAME="0.0.0.0" ENV GRADIO_SERVER_PORT=7860 CMD ["python", "app.py"]