Files
lidar_rendu/docker-compose.yml

83 lines
3.0 KiB
YAML

# 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 interactive + 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 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
# Machine de traitement pour une webapp 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/rebuild, /api/sync).
# - 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.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.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