Files
SchotzIAD/run-docker.sh
T
MadJax e3f946f7d4 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.
2026-09-14 02:08:27 +02:00

93 lines
3.1 KiB
Bash
Executable File

#!/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