# Lancement du pipeline LiDAR — TOUJOURS via docker compose : # docker compose up -d --build serve # TOUJOURS --build : le code est baké dans # # l'image, sans --build l'ANCIEN code tourne # # (carte + tuiles XYZ + API sur http://localhost:8973) # docker compose logs -f serve # journal du serveur # docker compose down # arrêt # Traitement ponctuel (sans serveur) — --build pour la même raison : # docker compose run --rm --build process [-r 0.2 | --force | --file ...] # Jupyter (opt-in) : # docker compose --profile interactive up -d jupyter services: # Carte + tuiles XYZ + 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 - LIDAR_PORT=8973 # Les générations lancées depuis la carte utilisent le GPU - LIDAR_GPU=1 - LIDAR_WORKERS=10 # Machine de traitement pour une carte distante (Raspberry Pi) : # décommenter et définir la même valeur en LIDAR_REMOTE_TOKEN là-bas # (protège /api/generate, /api/preview, /api/stop). # - LIDAR_API_TOKEN=change-moi # Réseaux autorisés à lancer les générations depuis la carte (défaut : # localhost + plages privées RFC1918 ; liste de CIDR séparés par # virgules, vide = tout autoriser). # - LIDAR_REGEN_CIDR=192.168.1.0/24 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 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 # Exploration interactive (opt-in : --profile interactive) jupyter: build: . image: lidar-lidar container_name: lidar-jupyter init: true user: "1000:1000" ports: - "8888:8888" volumes: - ./input:/data/input:ro # exploration seule : pas d'écriture dans input/ - ./output:/data/output - ./notebooks:/workspace # Pas de token vide : Jupyter en génère un et l'affiche (URL de login) # dans `docker compose logs jupyter` — le port 8888 reste protégé. command: > bash -c "pip install --user jupyter && \ python3 -m notebook --ip=0.0.0.0 --port=8888 --no-browser \ --notebook-dir=/workspace" profiles: - interactive