# Lancement du pipeline LiDAR — TOUJOURS via docker compose : # docker compose build # après chaque édition de code (code baké dans l'image) # docker compose up -d serve # carte interactive + API sur http://localhost:8973 # docker compose logs -f serve # journal du serveur # docker compose down # arrêt # Traitement ponctuel (sans serveur) : # docker compose run --rm process [-r 0.5,0.2 | --force | --file ...] # Jupyter (opt-in) : # docker compose --profile interactive up -d jupyter services: # Carte interactive + API de génération (mode ./run.sh --serve) serve: build: . image: lidar-lidar container_name: lidar-serve init: true user: "1000:1000" gpus: all ports: - "8973:8973" 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 # Les générations lancées depuis la carte utilisent le GPU - LIDAR_GPU=1 - LIDAR_WORKERS=2 command: python3 -m uvicorn lidar_pipeline.webapp: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 volumes: - ./input:/data/input - ./output:/data/output environment: - TZ=Europe/Paris command: ["python3", "-m", "lidar_pipeline", "/data/input", "-o", "/data/output", "-r", "0.5,0.2", "-g", "all"] profiles: - process # Exploration interactive (opt-in : --profile interactive) jupyter: build: . image: lidar-lidar container_name: lidar-jupyter init: true ports: - "8888:8888" volumes: - ./input:/data/input - ./output:/data/output - ./notebooks:/workspace command: > bash -c "pip install jupyter && \ jupyter notebook --ip=0.0.0.0 --port=8888 --no-browser --allow-root --NotebookApp.token=''" profiles: - interactive