This commit is contained in:
michael committed 2026-09-15 09:51:30 +00:00
1 parent b7f7d7e793
commit c01d747352
14 files changed
+987 -294

No files matched your search

+47 -6
View File
@@ -1,23 +1,40 @@
#!/usr/bin/env bash
set -euo pipefail
APP_PORT="${APP_PORT:-3910}"
BACKEND_PORT="${BACKEND_PORT:-3001}"
export API_PROXY_TARGET="${API_PROXY_TARGET:-http://127.0.0.1:${BACKEND_PORT}}"
export NEXT_TELEMETRY_DISABLED=1
if [[ -f ".env_dev" ]]; then
set -a
source .env_dev
set +a
fi
APP_PORT="${APP_PORT:-3911}"
BACKEND_PORT="${BACKEND_PORT:-3002}"
API_PROXY_TARGET="${API_PROXY_TARGET:-http://127.0.0.1:${BACKEND_PORT}}"
export APP_PORT BACKEND_PORT API_PROXY_TARGET
export NEXT_TELEMETRY_DISABLED=1
if [[ -z "${DATABASE_URL:-}" ]]; then
echo "DATABASE_URL fehlt. Beispiel:"
echo " export DATABASE_URL='postgresql://user:pass@localhost:5432/tickettracker'"
exit 1
fi
DATABASE_HOST="$(node -e 'const url = new URL(process.env.DATABASE_URL); process.stdout.write(url.hostname)' 2>/dev/null || true)"
POSTGRES_CONTAINER="${POSTGRES_CONTAINER:-tickettracker-postgres}"
if [[ "${DATABASE_HOST}" == "postgres" || "${DATABASE_HOST}" == "postgres-tickettracker" ]]; then
if ! getent hosts "${DATABASE_HOST}" >/dev/null 2>&1 && command -v docker >/dev/null 2>&1 && docker inspect "${POSTGRES_CONTAINER}" >/dev/null 2>&1; then
POSTGRES_CONTAINER_IP="$(docker inspect -f '{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' "${POSTGRES_CONTAINER}")"
if [[ -n "${POSTGRES_CONTAINER_IP}" ]]; then
export DATABASE_URL="$(
DATABASE_HOST="${POSTGRES_CONTAINER_IP}" node -e 'const url = new URL(process.env.DATABASE_URL); url.hostname = process.env.DATABASE_HOST; process.stdout.write(url.toString())'
)"
echo "Nutze Docker-Postgres ${POSTGRES_CONTAINER} unter ${POSTGRES_CONTAINER_IP}:5432 für den lokalen Start."
fi
fi
fi
NODE_MAJOR="$(node -p 'Number(process.versions.node.split(".")[0])' 2>/dev/null || echo 0)"
if [[ "${NODE_MAJOR}" -lt 20 ]]; then
@@ -37,8 +54,32 @@ cleanup() {
trap cleanup EXIT INT TERM
echo "Starte Backend auf Port ${BACKEND_PORT}"
SERVE_FRONTEND=false PORT="${BACKEND_PORT}" npm run start --workspace backend &
BACKEND_LOG="${TMPDIR:-/tmp}/tickettracker-backend-local.log"
rm -f "${BACKEND_LOG}"
SERVE_FRONTEND=false PORT="${BACKEND_PORT}" npm run start --workspace backend >"${BACKEND_LOG}" 2>&1 &
BACKEND_PID=$!
echo "Warte auf Backend ${API_PROXY_TARGET}"
for _ in $(seq 1 50); do
if ! kill -0 "${BACKEND_PID}" 2>/dev/null; then
echo "Backend konnte nicht gestartet werden:"
cat "${BACKEND_LOG}"
exit 1
fi
if curl -fsS "${API_PROXY_TARGET}/api/debug/status" >/dev/null 2>&1; then
break
fi
sleep 0.2
done
if ! curl -fsS "${API_PROXY_TARGET}/api/debug/status" >/dev/null 2>&1; then
echo "Backend antwortet nicht unter ${API_PROXY_TARGET}."
echo "Letzte Backend-Ausgabe:"
tail -n 80 "${BACKEND_LOG}" 2>/dev/null || true
exit 1
fi
echo "Starte Frontend auf http://localhost:${APP_PORT}"
PORT="${APP_PORT}" npm run start --workspace frontend