File size: 1,131 Bytes
44131b7
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
FROM python:3.11-slim

# System deps for GDAL/geopandas
RUN apt-get update && apt-get install -y --no-install-recommends \
    libgdal-dev \
    gdal-bin \
    libgeos-dev \
    libproj-dev \
    && rm -rf /var/lib/apt/lists/*

WORKDIR /app

# Install Python deps
COPY requirements.txt .
RUN pip install --no-cache-dir -r requirements.txt

# Copy application files
COPY data_pipeline.py .
COPY dashboard_helpers.py .
COPY app.ipynb .

# Pre-download databases so it's baked into the image
RUN python -c "import leafmap; \
    leafmap.download_file( \
        'https://opengeos.org/data/duckdb/nyc_data.db.zip', \
        unzip=True, \
        overwrite=True \
    )"
RUN python data_pipeline.py

# Expose the port HF Spaces expects
EXPOSE 7860

# Force Jupyter to trust the notebook so widgets can execute JS
RUN jupyter trust app.ipynb

# Launch Voila with relaxed iframe security and gridstack template
CMD ["voila", "app.ipynb", \
     "--port=7860", \
     "--no-browser", \
     "--Voila.ip=0.0.0.0", \
     "--Voila.tornado_settings={'headers':{'Content-Security-Policy':'frame-ancestors *'}}", \
     "--template=gridstack"]