57 lines
2.0 KiB
Bash
Executable File
57 lines
2.0 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
set -euo pipefail
|
|
|
|
say(){ printf "\033[1;36m%s\033[0m\n" "$*"; }
|
|
err(){ printf "\033[1;31m%s\033[0m\n" "$*" >&2; }
|
|
|
|
say "▶ docker compose ps"
|
|
docker compose ps || { err "❌ Pas dans le bon dossier ?"; exit 1; }
|
|
|
|
say "▶ Test host → Nginx"
|
|
if curl -fsS http://localhost/api/health >/dev/null 2>&1; then
|
|
say "✅ Host OK: http://localhost/api/health"
|
|
exit 0
|
|
else
|
|
err "⚠️ Host 502 (ou autre). On continue…"
|
|
fi
|
|
|
|
say "▶ API container up ?"
|
|
if ! docker compose ps | awk 'NR>1{print $1,$4}' | grep -q 'api .*Up'; then
|
|
err "❌ Service api pas UP → démarrage…"
|
|
docker compose up -d api
|
|
fi
|
|
|
|
say "▶ Test API inside api container"
|
|
docker compose exec api sh -lc 'apk add --no-cache curl >/dev/null 2>&1 || true; curl -i http://localhost:4000/api/health || true'
|
|
|
|
say "▶ Test depuis Nginx vers api:4000"
|
|
if docker compose exec web sh -lc 'wget -q -O- http://api:4000/api/health >/dev/null 2>&1'; then
|
|
say "✅ Nginx atteint api:4000"
|
|
TARGET="api:4000"
|
|
else
|
|
err "⚠️ api:4000 KO. Test vers supersunday_api:4000…"
|
|
if docker compose exec web sh -lc 'wget -q -O- http://supersunday_api:4000/api/health >/dev/null 2>&1'; then
|
|
say "✅ Nginx atteint supersunday_api:4000"
|
|
TARGET="supersunday_api:4000"
|
|
else
|
|
err "❌ Nginx n'atteint pas l'API par le réseau docker."
|
|
say "Logs web (Nginx) :"; docker compose logs --since=2m web || true
|
|
say "Logs api :"; docker compose logs --since=2m api || true
|
|
exit 1
|
|
fi
|
|
fi
|
|
|
|
say "▶ Vérifie/force nginx.conf → upstream ${TARGET}"
|
|
# Remplace le bloc upstream par la bonne cible
|
|
if [ -f nginx/nginx.conf ]; then
|
|
# Portable sur macOS (BSD sed) : crée sauvegarde .bak
|
|
sed -i '' -e "s#upstream api_upstream {[^}]*}#upstream api_upstream { server ${TARGET}; keepalive 16; }#g" nginx/nginx.conf
|
|
docker compose restart web
|
|
else
|
|
err "❌ nginx/nginx.conf introuvable"
|
|
exit 1
|
|
fi
|
|
|
|
say "▶ Re-test host → Nginx"
|
|
curl -i http://localhost/api/health || { err "❌ Toujours KO"; exit 1; }
|
|
say "✅ OK via Nginx" |