From 4982cddeef9a01a6314eff2bb0dde4349b5fbd40 Mon Sep 17 00:00:00 2001 From: Till Tomczak Date: Thu, 1 May 2025 16:05:52 +0200 Subject: [PATCH] =?UTF-8?q?=F0=9F=8E=89=20feat:=20update=20Dockerfile=20an?= =?UTF-8?q?d=20scripts=20for=20improved=20functionality?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Dockerfile | 12 +++++++----- edit_file | 1 + start.sh | 19 +++++++++++++++---- templates/base.html | 24 +++++++++++++++++++----- 4 files changed, 42 insertions(+), 14 deletions(-) create mode 100644 edit_file diff --git a/Dockerfile b/Dockerfile index 058e334..3acc991 100644 --- a/Dockerfile +++ b/Dockerfile @@ -4,7 +4,7 @@ FROM python:3.11-slim # Arbeitsverzeichnis in Container WORKDIR /app -# Systemabhängigkeiten (falls erforderlich) +# Systemabhängigkeiten installieren und Verzeichnisse anlegen RUN apt-get update && \ apt-get install -y --no-install-recommends gcc && \ rm -rf /var/lib/apt/lists/* && \ @@ -18,14 +18,16 @@ RUN pip install --upgrade pip && \ # Anwendungscode kopieren COPY . . +# Berechtigungen für database-Ordner +RUN chmod -R 777 /app/database + # Exponiere Port 5000 für Flask EXPOSE 5000 # Setze Umgebungsvariablen ENV FLASK_APP=app.py -ENV FLASK_ENV=production +ENV PYTHONUNBUFFERED=1 +ENV PYTHONDONTWRITEBYTECODE=1 -# Wenn eine .env im Arbeitsverzeichnis vorhanden ist, wird sie automatisch von Flask geladen - -# Startkommando +# Startkommando mit spezifischen Flags für Produktion CMD ["python", "app.py"] \ No newline at end of file diff --git a/edit_file b/edit_file new file mode 100644 index 0000000..0519ecb --- /dev/null +++ b/edit_file @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/start.sh b/start.sh index 4e151c4..7564443 100644 --- a/start.sh +++ b/start.sh @@ -3,20 +3,31 @@ set -e # Alte Container stoppen und entfernen if [ $(docker ps -aq --filter "name=systades_app" | wc -l) -gt 0 ]; then + echo "Stoppe und entferne alten Container..." docker rm -f systades_app || true fi -if [ $(docker ps -aq --filter "name=systades_db" | wc -l) -gt 0 ]; then - docker rm -f systades_db || true -fi # Alte Images löschen +echo "Entferne altes Image..." docker rmi -f systades_app:latest || true +# Stelle sicher, dass das Datenbankverzeichnis existiert +mkdir -p database +chmod 777 database + # Docker-Compose Setup neu bauen +echo "Baue Container neu..." docker-compose build --no-cache # Docker-Compose neu starten +echo "Starte Container..." docker-compose up -d --force-recreate +# Warte kurz und prüfe, ob der Container läuft +echo "Prüfe Container-Status..." +sleep 3 +docker ps | grep systades_app + # Ausgabe -echo "Systades-Anwendung ist jetzt unter http://localhost:5000 erreichbar." \ No newline at end of file +echo "Systades-Anwendung ist jetzt unter http://localhost:5000 erreichbar." +echo "Container-Logs können mit 'docker logs -f systades_app' angezeigt werden." \ No newline at end of file diff --git a/templates/base.html b/templates/base.html index fe7d793..566f311 100644 --- a/templates/base.html +++ b/templates/base.html @@ -191,6 +191,17 @@ showSettingsModal: false, init() { + this.initDarkMode(); + }, + + initDarkMode() { + // Lade zuerst den Wert aus dem localStorage (client-seitig) + const storedMode = localStorage.getItem('colorMode'); + if (storedMode) { + this.darkMode = storedMode === 'dark'; + } + + // Dann hole die Server-Einstellung, die Vorrang hat this.fetchDarkModeFromSession(); }, @@ -200,8 +211,7 @@ .then(data => { if (data.success) { this.darkMode = data.darkMode === 'true'; - document.querySelector('html').classList.toggle('dark', this.darkMode); - document.querySelector('body').classList.toggle('dark', this.darkMode); + this.applyDarkMode(); } }) .catch(error => { @@ -209,10 +219,15 @@ }); }, - toggleDarkMode() { - this.darkMode = !this.darkMode; + applyDarkMode() { document.querySelector('html').classList.toggle('dark', this.darkMode); document.querySelector('body').classList.toggle('dark', this.darkMode); + localStorage.setItem('colorMode', this.darkMode ? 'dark' : 'light'); + }, + + toggleDarkMode() { + this.darkMode = !this.darkMode; + this.applyDarkMode(); fetch('/api/set_dark_mode', { method: 'POST', @@ -224,7 +239,6 @@ .then(response => response.json()) .then(data => { if (data.success) { - localStorage.setItem('darkMode', this.darkMode ? 'dark' : 'light'); document.dispatchEvent(new CustomEvent('darkModeToggled', { detail: { isDark: this.darkMode } }));