La webapp (carte + vignettes) et la génération de tuiles se déploient sur deux machines : image légère Dockerfile.webapp (FastAPI + Pillow AVIF natif + pyproj) sur Raspberry Pi, pipeline complet sur la machine de traitement. LIDAR_GENERATION_URL délègue /api/generate, /api/preview et /api/status ; /api/sync ramène les tuiles par rsync puis régénère vignettes et index localement. Token partagé optionnel (LIDAR_API_TOKEN/LIDAR_REMOTE_TOKEN). Retire du dépôt les journaux internes (.swival, audit-findings) et les données (data/, notebooks/). Doc : docs/DEPLOY_WEBAPP.md.
50 lines
1.6 KiB
JSON
50 lines
1.6 KiB
JSON
# Webapp légère (carte interactive + vignettes) — Raspberry Pi / ARM64.
|
|
#
|
|
# Sert la carte, régénère index/vignettes/sous-tuiles localement et délègue
|
|
# la génération de tuiles (PDAL/GPU) à la machine de traitement via
|
|
# LIDAR_GENERATION_URL — cf. docs/DEPLOY_WEBAPP.md.
|
|
#
|
|
# Build sur la machine cible (multi-plateforme natif) :
|
|
# docker build -f Dockerfile.webapp -t lidar-webapp .
|
|
FROM python:3.12-slim
|
|
|
|
ENV DEBIAN_FRONTEND=noninteractive
|
|
ENV TZ=Europe/Paris
|
|
|
|
# rsync + client SSH : synchronisation des tuiles depuis la machine de
|
|
# traitement (LIDAR_SYNC_CMD). La clé se monte dans /home/lidar/.ssh.
|
|
RUN apt-get update && apt-get install -y --no-install-recommends \
|
|
rsync \
|
|
openssh-client \
|
|
&& rm -rf /var/lib/apt/lists/*
|
|
|
|
WORKDIR /app
|
|
|
|
# Dépendances de la seule interface : FastAPI/uvicorn (serveur), Pillow
|
|
# (vignettes + sous-tuiles AVIF — natif depuis la 11.3, wheels ARM64
|
|
# incluses), pyproj (géoréférencement léger, sans GDAL).
|
|
RUN pip3 install --no-cache-dir \
|
|
fastapi \
|
|
uvicorn \
|
|
"pillow>=11.3" \
|
|
pyproj
|
|
|
|
# Code : webapp.py + index.py seulement utilisés — les modules de traitement
|
|
# (dtm, visualizations...) sont copiés mais jamais importés par la webapp.
|
|
COPY lidar_pipeline/ ./lidar_pipeline/
|
|
|
|
RUN groupadd -g 1000 lidar && \
|
|
useradd -u 1000 -g lidar -m -s /bin/bash lidar && \
|
|
mkdir -p /data/output /data/input && \
|
|
chown -R lidar:lidar /data
|
|
|
|
ENV LIDAR_INPUT_DIR=/data/input \
|
|
LIDAR_OUTPUT_DIR=/data/output \
|
|
LIDAR_PORT=8973
|
|
|
|
USER lidar
|
|
|
|
EXPOSE 8973
|
|
|
|
CMD ["python3", "-m", "uvicorn", "lidar_pipeline.webapp:app", "--host", "0.0.0.0", "--port", "8973"]
|