This commit is contained in:
michael committed 2026-09-29 07:46:21 +02:00
1 parent 2105a0c5f7
commit c89d4825e2
30 files changed
+5435 -627

No files matched your search

+65 -5
View File
@@ -13,24 +13,84 @@ 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
kill_port_processes() {
local port="$1"
local pids=""
if command -v lsof >/dev/null 2>&1; then
pids="${pids}"$'\n'"$(lsof -tiTCP:"${port}" -sTCP:LISTEN 2>/dev/null || true)"
fi
if command -v fuser >/dev/null 2>&1; then
pids="${pids}"$'\n'"$(fuser -n tcp "${port}" 2>/dev/null | tr ' ' '\n' || true)"
fi
if command -v ss >/dev/null 2>&1; then
pids="${pids}"$'\n'"$(ss -ltnp "sport = :${port}" 2>/dev/null | grep -o 'pid=[0-9]*' | cut -d= -f2 || true)"
fi
pids="$(printf '%s\n' "${pids}" | sed '/^$/d' | sort -u)"
if [[ -z "${pids}" ]]; then
echo "Port ${port} ist frei."
return
fi
echo "Beende Prozess(e) auf Port ${port}: ${pids//$'\n'/ }"
kill ${pids} 2>/dev/null || true
sleep 1
local remaining=""
for pid in ${pids}; do
if kill -0 "${pid}" 2>/dev/null; then
remaining="${remaining} ${pid}"
fi
done
if [[ -n "${remaining}" ]]; then
echo "Erzwinge Stop für:${remaining}"
kill -9 ${remaining} 2>/dev/null || true
fi
}
kill_port_processes "${BACKEND_PORT}"
if [[ "${APP_PORT}" != "${BACKEND_PORT}" ]]; then
kill_port_processes "${APP_PORT}"
fi
if [[ -z "${DATABASE_URL:-}" ]]; then
echo "DATABASE_URL fehlt. Beispiel:"
echo " export DATABASE_URL='postgresql://user:pass@localhost:5432/tickettracker'"
exit 1
fi
if [[ -z "${SECRET_ENCRYPTION_KEY:-}" && -z "${TICKETTRACKER_SECRET_KEY:-}" ]]; then
export SECRET_ENCRYPTION_KEY="${DATABASE_URL}"
fi
DATABASE_HOST="$(node -e 'const url = new URL(process.env.DATABASE_URL); process.stdout.write(url.hostname)' 2>/dev/null || true)"
DATABASE_PORT="$(node -e 'const url = new URL(process.env.DATABASE_URL); process.stdout.write(url.port || "5432")' 2>/dev/null || echo 5432)"
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 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
if [[ -n "${POSTGRES_CONTAINER_IP}" ]]; then
SHOULD_USE_CONTAINER_IP=false
if [[ "${DATABASE_HOST}" == "postgres" || "${DATABASE_HOST}" == "postgres-tickettracker" ]]; then
if ! getent hosts "${DATABASE_HOST}" >/dev/null 2>&1; then
SHOULD_USE_CONTAINER_IP=true
fi
elif [[ "${DATABASE_HOST}" =~ ^172\. ]] && [[ "${DATABASE_HOST}" != "${POSTGRES_CONTAINER_IP}" ]]; then
SHOULD_USE_CONTAINER_IP=true
fi
if [[ "${SHOULD_USE_CONTAINER_IP}" == "true" ]]; 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."
echo "Nutze Docker-Postgres ${POSTGRES_CONTAINER} unter ${POSTGRES_CONTAINER_IP}:${DATABASE_PORT} für den lokalen Start."
fi
fi
fi