Initialisiere VoTiAn NG mit Docker-Build, .env-Konfiguration und Cookie-Sitzungen
This commit is contained in:
commit
1a30233269
63 files changed
+12138
No files matched your search
Executable
+59
@@ -0,0 +1,59 @@
|
||||
#!/usr/bin/env python3
|
||||
"""Start Spring Boot with database credentials from .env or the process environment."""
|
||||
from __future__ import annotations
|
||||
|
||||
import argparse
|
||||
import os
|
||||
from pathlib import Path
|
||||
import sys
|
||||
|
||||
sys.path.insert(0, str(Path(__file__).resolve().parent))
|
||||
from env_config import load_environment
|
||||
|
||||
ROOT = Path(__file__).resolve().parents[1]
|
||||
|
||||
|
||||
def database_environment(root: Path, current: dict[str, str]) -> dict[str, str]:
|
||||
env = load_environment(root / ".env", current)
|
||||
required = ("DB_URL", "DB_USER", "DB_PASSWORD")
|
||||
if any(key not in env for key in required) or not env["DB_URL"] or not env["DB_USER"]:
|
||||
raise ValueError("DB_URL, DB_USER und DB_PASSWORD müssen konfiguriert sein.")
|
||||
return env
|
||||
|
||||
|
||||
def backend_jar(root: Path) -> Path:
|
||||
jars = sorted((root / "backend/target").glob("votian-backend-*.jar"))
|
||||
if len(jars) != 1 or not jars[0].is_file():
|
||||
raise FileNotFoundError("Kein eindeutiges Backend-JAR. Zuerst ./build.sh ausführen.")
|
||||
return jars[0]
|
||||
|
||||
|
||||
def main() -> int:
|
||||
parser = argparse.ArgumentParser(description=__doc__)
|
||||
parser.add_argument("--check-config", action="store_true", help="Nur Konfiguration prüfen; keine DB-Verbindung")
|
||||
parser.add_argument("--port", type=int, help="Port aus .env/Umgebung überschreiben (Standard 8080)")
|
||||
args = parser.parse_args()
|
||||
try:
|
||||
env = database_environment(ROOT, dict(os.environ))
|
||||
port = args.port if args.port is not None else int(env.get("PORT", "8080"))
|
||||
if not 1 <= port <= 65535:
|
||||
raise ValueError("Ungültiger Port.")
|
||||
env["PORT"] = str(port)
|
||||
except (OSError, ValueError):
|
||||
print("Konfiguration nicht lesbar/ungültig. DB_URL, DB_USER und DB_PASSWORD in .env oder der Umgebung sowie PORT prüfen.", file=sys.stderr)
|
||||
return 2
|
||||
if args.check_config:
|
||||
print("Datenbankkonfiguration aus .env/Umgebung geprüft. Keine Verbindung hergestellt; keine Daten verändert.")
|
||||
return 0
|
||||
try:
|
||||
jar = backend_jar(ROOT)
|
||||
except FileNotFoundError:
|
||||
print("Kein eindeutiges Backend-JAR. Zuerst ./build.sh ausführen.", file=sys.stderr)
|
||||
return 2
|
||||
os.chdir(ROOT / "backend")
|
||||
os.execvpe("java", ["java", "-jar", str(jar)], env)
|
||||
return 0
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
raise SystemExit(main())
|
||||
Reference in new issue
Block a user