Files
lidar_rendu/docker-compose.worker.yml

72 lines
2.9 KiB
YAML
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Machine de traitement — générateur de tuiles (cf. docs/DEPLOY_WEBAPP.md).
#
# Tourne sur la machine puissante (GPU + PDAL) et expose l'API que les
# cartes distantes (Raspberry Pi, docker-compose.maps.yml + LIDAR_GENERATION_URL)
# appellent : dessin d'une zone → téléchargement IGN + traitement GPU ici,
# dalles et tuiles servies aux machines légères (/api/tiles + statiques,
# /tiles/XYZ).
#
# docker compose -f docker-compose.worker.yml up -d --build
# docker compose -f docker-compose.worker.yml logs -f worker
# docker compose -f docker-compose.worker.yml down
#
# Traitement batch ponctuel des dalles présentes dans input/ :
# docker compose -f docker-compose.worker.yml run --rm --build process [-r 0.5,0.2 | --force]
services:
# Générateur de tuiles : carte XYZ + API de génération (image complète, GPU)
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:
- "8973:8973" # joignable par les cartes distantes (LIDAR_GENERATION_URL
# et LIDAR_SOURCE_URL pointent ici)
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_PORT=8973
# Les générations lancées depuis une carte distante utilisent le GPU
- LIDAR_GPU=1
- LIDAR_WORKERS=auto
# Workers par GPU bornés par la VRAM libre au lancement du run
# ((libre − réserve) / pic d'un worker) ; l'excédent tourne en CPU.
# Pic estimé à 2048 Mo : à ajuster après mesure (nvidia-smi pendant un run).
# - LIDAR_GPU_WORKER_MIB=2048
# - LIDAR_GPU_RESERVE_MIB=512
# Une ligne par worker : BLAS/OpenMP mono-thread, sinon 12 workers × N
# threads écrasent les 14 cœurs (load 68+ observé pendant les runs)
- OMP_NUM_THREADS=1
- OPENBLAS_NUM_THREADS=1
- MKL_NUM_THREADS=1
- NUMEXPR_NUM_THREADS=1
# Protéger l'API si le réseau n'est pas de confiance : même valeur que
# LIDAR_REMOTE_TOKEN sur chaque carte distante (sinon, laisser commenté)
# - LIDAR_API_TOKEN=change-moi
command: python3 -m uvicorn lidar_pipeline.mapserve:app --host 0.0.0.0 --port 8973
restart: unless-stopped
# Traitement ponctuel des dalles input/ (une passe puis arrêt)
process:
build: .
image: lidar-lidar
container_name: lidar-process
init: true
user: "1000:1000"
gpus: all # retirer cette ligne sur une machine sans GPU
volumes:
- ./input:/data/input
- ./output:/data/output
environment:
- TZ=Europe/Paris
command: ["python3", "-m", "lidar_pipeline", "/data/input", "-o", "/data/output", "-r", "0.2", "-g", "all"]
profiles:
- process