#!/usr/bin/env bash # Point d'entrée du conteneur webapp : sert la carte via uvicorn. # # HTTPS optionnel (requis pour la géolocalisation GPS depuis un téléphone) : # si LIDAR_SSL_CERTFILE + LIDAR_SSL_KEYFILE sont définis ET que les fichiers # existent (certificat auto-signé, cf. ./make-tls-cert.sh), la carte est servie # en https://:PORT et le bouton ⌖ fonctionne sur téléphone. Si les # variables sont définies mais les fichiers absents (cert non encore généré), # repli en HTTP avec un avertissement — la carte reste consultable, seul le # GPS est indisponible. set -euo pipefail PORT="${LIDAR_PORT:-8973}" SSL_ARGS=() if [ -n "${LIDAR_SSL_CERTFILE:-}" ] && [ -n "${LIDAR_SSL_KEYFILE:-}" ]; then if [ -f "${LIDAR_SSL_CERTFILE}" ] && [ -f "${LIDAR_SSL_KEYFILE}" ]; then echo "Webapp servie en HTTPS (certificat ${LIDAR_SSL_CERTFILE}) — GPS actif sur téléphone" SSL_ARGS=(--ssl-certfile "${LIDAR_SSL_CERTFILE}" --ssl-keyfile "${LIDAR_SSL_KEYFILE}") else echo "Avertissement : certificats TLS absents (${LIDAR_SSL_CERTFILE} / ${LIDAR_SSL_KEYFILE}) — service en HTTP." >&2 echo "Générer le certificat puis relancer : ./make-tls-cert.sh && docker compose up -d --build" >&2 fi fi exec python3 -m uvicorn lidar_pipeline.webapp:app --host 0.0.0.0 --port "${PORT}" ${SSL_ARGS[@]+"${SSL_ARGS[@]}"}