SchotzIAD KM Tracker : suivi des trajets kilométriques (Angular + .NET 8)
Application complète de saisie et de suivi des trajets kilométriques avec calcul de distance routière (OpenRouteService), barème kilométrique, résumés et régularisation annuelle. Backend (ASP.NET Core .NET 8, EF Core, SQLite) : - Trajets (CRUD, réordonnancement, insertion), calcul de distance ORS avec fallback Haversine, géométrie d'itinéraire stockée par trajet, recalcul en masse. - Profil, véhicules (avec dénomination), carnet d'adresses nommées, cache d'adresses. - Barème kilométrique : tranches multiples par puissance fiscale, borne max exclusive avec 'illimité' (KmMax nullable), coefficient à 3 décimales, recopie du dernier barème connu. - Résumés mensuel/annuel, montants réglés, régularisation, export PDF. Frontend (Angular 22, zoneless + signals) : - Consultation par jour, navigation temporelle synchronisée, carte Leaflet, formulaire de trajet (adresses nommées, domicile, autocomplétion BAN). - Détection de changement zoneless (indépendante de zone.js). Hébergement : Docker Compose (nginx + backend), scripts run-dev.sh / run-docker.sh.
This commit is contained in:
Executable
+92
@@ -0,0 +1,92 @@
|
||||
#!/usr/bin/env bash
|
||||
# Lancement de SchotzIAD KM Tracker SANS docker compose (topologie équivalente).
|
||||
# Utile quand docker compose est indisponible/cassé.
|
||||
#
|
||||
# Usage :
|
||||
# ./run-docker.sh up # build + démarre backend et frontend
|
||||
# ./run-docker.sh down # arrête et supprime les conteneurs (garde le volume/les données)
|
||||
# ./run-docker.sh destroy # arrête tout ET supprime le volume SQLite (perte des données)
|
||||
# ./run-docker.sh logs # affiche les logs des deux conteneurs
|
||||
#
|
||||
# Selon votre config Docker, préfixez par sudo : sudo ./run-docker.sh up
|
||||
set -euo pipefail
|
||||
|
||||
# Détecte s'il faut sudo (utilisateur hors du groupe docker).
|
||||
DOCKER="docker"
|
||||
if ! docker info >/dev/null 2>&1; then
|
||||
if sudo -n docker info >/dev/null 2>&1 || sudo docker info >/dev/null 2>&1; then
|
||||
DOCKER="sudo docker"
|
||||
echo "[info] Docker requiert sudo — utilisation de 'sudo docker'."
|
||||
else
|
||||
echo "[erreur] Démon Docker inaccessible (ni direct, ni via sudo)." >&2
|
||||
exit 1
|
||||
fi
|
||||
fi
|
||||
|
||||
ROOT="$(cd "$(dirname "$0")" && pwd)"
|
||||
NET="schotziad-net"
|
||||
VOL="trajets-data"
|
||||
ORS_KEY="${ORS_API_KEY:-}"
|
||||
|
||||
# Charge ORS_API_KEY depuis .env s'il existe et n'est pas déjà défini.
|
||||
if [[ -z "$ORS_KEY" && -f "$ROOT/.env" ]]; then
|
||||
ORS_KEY="$(grep -E '^ORS_API_KEY=' "$ROOT/.env" | head -n1 | cut -d= -f2- || true)"
|
||||
fi
|
||||
|
||||
up() {
|
||||
echo "[1/5] Réseau et volume…"
|
||||
$DOCKER network inspect "$NET" >/dev/null 2>&1 || $DOCKER network create "$NET"
|
||||
$DOCKER volume inspect "$VOL" >/dev/null 2>&1 || $DOCKER volume create "$VOL"
|
||||
|
||||
echo "[2/5] Build backend…"
|
||||
$DOCKER build -t schotziad-backend "$ROOT/backend"
|
||||
|
||||
echo "[3/5] Build frontend…"
|
||||
$DOCKER build -t schotziad-frontend "$ROOT/frontend"
|
||||
|
||||
echo "[4/5] Démarrage backend (nom d'hôte réseau: backend)…"
|
||||
$DOCKER rm -f schotziad-backend >/dev/null 2>&1 || true
|
||||
$DOCKER run -d --name schotziad-backend --network "$NET" --network-alias backend \
|
||||
-e "ASPNETCORE_URLS=http://+:8080" \
|
||||
-e "ConnectionStrings__Default=Data Source=/data/trajets.db" \
|
||||
-e "ORS__ApiKey=${ORS_KEY}" \
|
||||
-v "$VOL:/data" \
|
||||
--restart unless-stopped \
|
||||
schotziad-backend
|
||||
|
||||
echo "[5/5] Démarrage frontend (http://localhost:8080)…"
|
||||
$DOCKER rm -f schotziad-frontend >/dev/null 2>&1 || true
|
||||
$DOCKER run -d --name schotziad-frontend --network "$NET" \
|
||||
-p 8080:80 \
|
||||
--restart unless-stopped \
|
||||
schotziad-frontend
|
||||
|
||||
echo
|
||||
echo "Prêt. Ouvrez http://localhost:8080"
|
||||
echo "Logs : ./run-docker.sh logs | Arrêt : ./run-docker.sh down"
|
||||
}
|
||||
|
||||
down() {
|
||||
$DOCKER rm -f schotziad-frontend schotziad-backend >/dev/null 2>&1 || true
|
||||
echo "Conteneurs arrêtés (le volume '$VOL' et les données sont conservés)."
|
||||
}
|
||||
|
||||
destroy() {
|
||||
down
|
||||
$DOCKER volume rm "$VOL" >/dev/null 2>&1 || true
|
||||
$DOCKER network rm "$NET" >/dev/null 2>&1 || true
|
||||
echo "Volume, réseau et données supprimés."
|
||||
}
|
||||
|
||||
logs() {
|
||||
echo "=== backend ==="; $DOCKER logs --tail 40 schotziad-backend 2>&1 || true
|
||||
echo "=== frontend ==="; $DOCKER logs --tail 20 schotziad-frontend 2>&1 || true
|
||||
}
|
||||
|
||||
case "${1:-up}" in
|
||||
up) up ;;
|
||||
down) down ;;
|
||||
destroy) destroy ;;
|
||||
logs) logs ;;
|
||||
*) echo "Usage: $0 {up|down|destroy|logs}" >&2; exit 2 ;;
|
||||
esac
|
||||
Reference in New Issue
Block a user