Files
lidar_rendu/docker-compose.local-2m.yml
Antoine Jacquin 5f018fe2b6 Raccorder les bords de tuiles voisines et encadrer les rendus en cours
Le MNT de chaque dalle s'étend d'une bande de 100 m remplie avec les
points sol des 8 tuiles voisines (option « Raccord des bords ») : les
rendus à grand noyau (openness, SVF, LRM) deviennent continus d'une
dalle à l'autre, les images restent recadrées sur le kilomètre exact.

Pendant une génération, la carte encadre les dalles du run : orange
pulsant en cours de rendu, rouge en échec — les coins WGS84 sont portés
par /api/status pour toutes les dalles non terminées.

La file de génération trie les dalles du nord au sud et passe à 10
workers GPU.
2026-09-19 20:44:44 +02:00

65 lines
2.6 KiB
YAML

# Simulation LOCALE du mode deux machines (cf. docs/DEPLOY_WEBAPP.md).
#
# Fait tourner sur une même machine les deux rôles normalement répartis sur
# deux machines, dans des conteneurs/images indépendants :
# - worker : machine de traitement (image complète, GPU) — API de
# génération sur le port hôte 8974 ;
# - webapp : interface légère (image Dockerfile.webapp, sans PDAL/GPU) —
# carte sur le port hôte 8973, avec son PROPRE cache de tuiles
# (./output-webapp) peuplé à la demande depuis le worker,
# comme le fait le Raspberry Pi.
#
# Intérêt en local : mettre à jour le code de l'interface (rebuild webapp)
# sans toucher au worker ni aux générations en cours, et réciproquement.
#
# docker compose -f docker-compose.local-2m.yml up -d --build
# docker compose -f docker-compose.local-2m.yml logs -f webapp worker
# docker compose -f docker-compose.local-2m.yml down
# Retour au mode tout-en-un : docker compose up -d --build serve
services:
worker:
build: .
image: lidar-lidar
container_name: lidar-worker
init: true
user: "1000:1000"
gpus: all # retirer cette ligne sur une machine sans GPU
ports:
- "8974:8973" # API joignable en direct (debug) et par la webapp
volumes:
# input/ en écriture : l'API y télécharge les dalles IGN manquantes
- ./input:/data/input
- ./output:/data/output
environment:
- TZ=Europe/Paris
- LIDAR_INPUT_DIR=/data/input
- LIDAR_OUTPUT_DIR=/data/output
- LIDAR_GPU=1
- LIDAR_WORKERS=10
command: python3 -m uvicorn lidar_pipeline.webapp:app --host 0.0.0.0 --port 8973
restart: unless-stopped
webapp:
build:
context: .
dockerfile: Dockerfile.webapp
image: lidar-webapp
container_name: lidar-webapp
init: true
user: "1000:1000"
ports:
- "8973:8973"
volumes:
# Cache local propre à la webapp (équivalent du disque du Raspberry
# Pi) — PAS le ./output du worker : la séparation rendu/interface doit
# être réelle, les tuiles arrivent à la demande depuis le worker.
- ./output-webapp:/data/output
environment:
- TZ=Europe/Paris
- LIDAR_OUTPUT_DIR=/data/output
# Backend de génération = worker du même réseau compose (DNS docker) ;
# les tuiles sont servies à la demande depuis le worker (cache peuplé
# au fil des consultations, vignettes régénérées localement par /api/sync)
- LIDAR_GENERATION_URL=http://lidar-worker:8973
restart: unless-stopped