🎉 feat: update Dockerfile and scripts for improved functionality
This commit is contained in:
12
Dockerfile
12
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"]
|
||||
19
start.sh
19
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."
|
||||
echo "Systades-Anwendung ist jetzt unter http://localhost:5000 erreichbar."
|
||||
echo "Container-Logs können mit 'docker logs -f systades_app' angezeigt werden."
|
||||
@@ -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 }
|
||||
}));
|
||||
|
||||
Reference in New Issue
Block a user