# 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=2 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