🎉 feat: update Dockerfile and scripts for improved functionality

This commit is contained in:
2025-05-01 16:05:52 +02:00
parent 631619ccb4
commit 4982cddeef
4 changed files with 42 additions and 14 deletions

View File

@@ -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"]

1
edit_file Normal file
View File

@@ -0,0 +1 @@

View File

@@ -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."
echo "Systades-Anwendung ist jetzt unter http://localhost:5000 erreichbar."
echo "Container-Logs können mit 'docker logs -f systades_app' angezeigt werden."

View File

@@ -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 }
}));