Bâcher l'interface dans l'image complète aussi, repli inscriptible

- Le Dockerfile principal (worker, --serve, local-2m) n'avait pas l'étape
  de bake : le repli de webapp.py tentait d'écrire webapp_assets/ dans le
  paquet installé (dist-packages, propriété de root) et faisait planter
  l'import de la webapp sous l'utilisateur lidar.
- Même étape de bake que Dockerfile.webapp, avec cd /tmp pour cibler le
  paquet installé (sinon la copie source /app capte l'import via sys.path).
- Le repli de webapp.py ne casse plus l'import si le dossier du paquet
  n'est pas inscriptible : réécriture dans un répertoire temporaire.
This commit is contained in:
Antoine Jacquin
2026-09-17 07:46:14 +02:00
parent ac182da55e
commit a87d049ef6
2 changed files with 19 additions and 5 deletions

View File

@ -58,6 +58,14 @@ COPY setup.py .
COPY lidar_pipeline/ ./lidar_pipeline/
RUN pip3 install --no-cache-dir .
# CSS/JS de l'interface (app.js/app.css + Leaflet) bâchés dans l'image :
# la webapp les sert depuis webapp_assets/ du paquet installé, plus depuis
# le volume (cf. Dockerfile.webapp). cd /tmp : sans lui, python3 -c met le
# répertoire courant (/app, copie source) sur sys.path et le bake atterrirait
# dans la copie au lieu du paquet installé (dist-packages) qu'utilise le
# conteneur au runtime.
RUN cd /tmp && python3 -c "import pathlib, lidar_pipeline.index as i; i._write_ui_assets(pathlib.Path(i.__file__).resolve().parent / 'webapp_assets')"
# Copy backward-compatible entry point
COPY process_lidar.py /usr/local/bin/
RUN chmod +x /usr/local/bin/process_lidar.py