diff --git a/docker-compose.webapp.yml b/docker-compose.webapp.yml index 138bce3..297adde 100644 --- a/docker-compose.webapp.yml +++ b/docker-compose.webapp.yml @@ -38,9 +38,10 @@ services: # Les tuiles sont servies à la demande depuis LIDAR_GENERATION_URL # (cache peuplé au fil des consultations) : plus de rsync ni de sync # périodique ; le bouton ↻ / POST /api/sync déclenchent le rebuild. - # Réseau autorisé à lancer les générations depuis la carte (défaut - # 192.168.1.0/24 ; chaîne vide = restriction levée). Les autres clients - # consultent la carte en lecture seule (boutons masqués, API 403). + # Réseau autorisé à lancer les générations depuis la carte (défaut : + # localhost + plages privées RFC1918 ; chaîne vide = restriction levée). + # Les autres clients consultent la carte en lecture seule (boutons + # masqués, API 403). # - LIDAR_REGEN_CIDR=192.168.1.0/24 # Le webapp sert du HTTP. Le TLS est terminé par le reverse proxy (Traefik, # certificat porté par le proxy) : la configuration Traefik (routage HTTPS) diff --git a/run.sh b/run.sh index 9ffc805..de8d8fb 100755 --- a/run.sh +++ b/run.sh @@ -118,7 +118,7 @@ while [ $# -gt 0 ]; do -g) GPU_FLAG="--gpus all" # Check if next arg is a GPU selector (not another flag) - if [ $# -gt 1 ] && [[ ! "$2" =~ ^- ]] && [[ "$2" != "all" || "$2" == "all" ]]; then + if [ $# -gt 1 ] && [[ ! "$2" =~ ^- ]]; then GPU_ARG="$2" GPU_FLAG="--gpus all" shift 2 @@ -233,20 +233,23 @@ fi # le journal complet est affiché. Ça évite de lancer tests/serveur/pipeline # sur une image périmée (code baké à la dernière édition). build_image() { + local log="/tmp/lidar_build_$$.log" echo "Mise à jour de l'image Docker (cache)..." - if ! docker build -t "$IMAGE_NAME" "$SCRIPT_DIR" >/tmp/lidar_build.log 2>&1; then - cat /tmp/lidar_build.log >&2 - echo "Échec du build de l'image (journal : /tmp/lidar_build.log)" >&2 + if ! docker build -t "$IMAGE_NAME" "$SCRIPT_DIR" >"$log" 2>&1; then + cat "$log" >&2 + echo "Échec du build de l'image (journal : $log)" >&2 exit 1 fi + rm -f "$log" } # Image webapp légère (conteneur webapp seul — cf. Dockerfile.webapp) build_webapp_image() { + local log="/tmp/lidar_webapp_build_$$.log" echo "Mise à jour de l'image Docker webapp (cache)..." - if ! docker build -f Dockerfile.webapp -t "$WEBAPP_IMAGE" "$SCRIPT_DIR" >/tmp/lidar_webapp_build.log 2>&1; then - cat /tmp/lidar_webapp_build.log >&2 - echo "Échec du build de l'image webapp (journal : /tmp/lidar_webapp_build.log)" >&2 + if ! docker build -f Dockerfile.webapp -t "$WEBAPP_IMAGE" "$SCRIPT_DIR" >"$log" 2>&1; then + cat "$log" >&2 + echo "Échec du build de l'image webapp (journal : $log)" >&2 exit 1 fi } @@ -283,10 +286,11 @@ if [ "$SERVE_FLAG" -eq 1 ]; then GPU_ENV_FLAG="-e LIDAR_GPU=1 -e CUDA_VISIBLE_DEVICES=${GPU_ARG} --gpus '""device=${GPU_ARG}""'" fi # Réseau autorisé à lancer les générations (/api/generate) : la valeur - # vient de l'environnement hôte LIDAR_REGEN_CIDR (défaut 192.168.1.0/24, - # chaîne vide pour lever la restriction). - REGEN_ENV_FLAG="-e LIDAR_REGEN_CIDR=${LIDAR_REGEN_CIDR-192.168.1.0/24}" - exec docker run --rm --init $GPU_FLAG $CUDA_ENV_FLAG \ + # vient de l'environnement hôte LIDAR_REGEN_CIDR ; sans elle, le défaut + # de la webapp s'applique (localhost + RFC1918). Chaîne VIDE pour lever + # complètement la restriction. + REGEN_ENV_FLAG="-e LIDAR_REGEN_CIDR=${LIDAR_REGEN_CIDR-127.0.0.0/8,::1,10.0.0.0/8,172.16.0.0/12,192.168.0.0/16}" + exec docker run --rm --init $GPU_FLAG \ --user 1000:1000 \ -p "${SERVE_PORT}:8973" \ -v "${INPUT_DIR}:/data/input" \