Files
lidar_rendu/Dockerfile.webapp
Antoine Jacquin 422f58d772 Split webapp for Raspberry Pi deployment, remote generation API and sync
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.
2026-09-02 19:44:39 +02:00

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"]