FallenBirdyForm/start_project.sh
2025-06-07 09:59:50 +02:00

142 lines
3.9 KiB
Bash
Executable file

#!/bin/bash
# Django FBF Projekt Startup Script
# Dieses Skript startet das Projekt und erstellt einen Admin-Benutzer
set -e # Script bei Fehlern beenden
echo "🚀 Django FBF Projekt wird gestartet..."
# Überprüfen ob Docker läuft
if ! docker info > /dev/null 2>&1; then
echo "❌ Docker ist nicht gestartet. Bitte starten Sie Docker Desktop."
exit 1
fi
# .env Datei erstellen falls sie nicht existiert
if [ ! -f .env ]; then
echo "📝 Erstelle .env Datei..."
cp .env.example .env
# Secret Key generieren
SECRET_KEY=$(openssl rand -base64 50 | tr -d "=+/" | cut -c1-50)
# .env Datei mit Entwicklungseinstellungen anpassen
cat > .env << EOF
# APP URL
APP_URL='http://localhost:8008'
# Allowed Hosts (für Traefik Route - nur ein Host)
ALLOWED_HOSTS='localhost'
# Database
DB_HOST='db'
DB_NAME='db_fbf'
DB_PASSWORD='superSecret'
DB_PORT='5432'
DB_USER='fbf'
# Debugging
DEBUG='True'
# Secrets
SECRET_KEY='${SECRET_KEY}'
# CSRF
CSRF_TRUSTED_ORIGINS='http://localhost:8008,http://127.0.0.1:8008'
# Email (Optional - für lokale Entwicklung)
DEFAULT_FROM_EMAIL='admin@localhost'
EMAIL_HOST_PASSWORD=''
EMAIL_HOST_USER=''
EMAIL_HOST=''
EMAIL_PORT=25
EOF
echo "✅ .env Datei erstellt"
else
echo "📄 .env Datei bereits vorhanden"
fi
# Docker Container stoppen falls sie laufen
echo "🛑 Stoppe eventuell laufende Container..."
docker compose down --remove-orphans > /dev/null 2>&1 || true
# Docker Images bauen und Container starten
echo "🔨 Baue Docker Images..."
docker compose build --no-cache
echo "🐳 Starte Docker Container..."
docker compose up -d
# Warten bis die Datenbank bereit ist
echo "⏳ Warte auf Datenbankverbindung..."
until docker compose exec db pg_isready -U fbf -d db_fbf > /dev/null 2>&1; do
echo " ... Datenbank startet noch..."
sleep 2
done
echo "✅ Datenbank ist bereit"
# Warten bis der Web-Container läuft
echo "⏳ Warte auf Web-Container..."
sleep 10
# Django Migrations ausführen
echo "🔄 Führe Django Migrations aus..."
docker compose exec -T web python manage.py makemigrations
docker compose exec -T web python manage.py migrate
# Fixtures laden (falls vorhanden)
if [ -d "app/fixtures" ] && [ "$(ls -A app/fixtures)" ]; then
echo "📦 Lade Fixtures..."
for fixture in app/fixtures/*.json; do
if [ -f "$fixture" ]; then
echo " Lade $(basename "$fixture")..."
docker compose exec -T web python manage.py loaddata "fixtures/$(basename "$fixture")" || true
fi
done
fi
# Admin-Benutzer erstellen
echo "👤 Erstelle Admin-Benutzer..."
cat << 'EOF' | docker compose exec -T web python manage.py shell
from django.contrib.auth.models import User
# Überprüfen ob Admin-User bereits existiert
if User.objects.filter(username='admin').exists():
print("Admin-Benutzer existiert bereits")
user = User.objects.get(username='admin')
user.set_password('admin')
user.is_superuser = True
user.is_staff = True
user.save()
print("Admin-Passwort wurde auf 'admin' zurückgesetzt")
else:
# Neuen Admin-User erstellen
User.objects.create_superuser('admin', 'admin@localhost', 'admin')
print("Admin-Benutzer erstellt")
print("Benutzername: admin")
print("Passwort: admin")
EOF
# Static Files sammeln
echo "📁 Sammle Static Files..."
docker compose exec -T web python manage.py collectstatic --noinput --clear
echo ""
echo "🎉 Projekt erfolgreich gestartet!"
echo ""
echo "📋 Informationen:"
echo " 🌐 Anwendung: http://localhost:8008"
echo " 🔧 Admin-Panel: http://localhost:8008/admin"
echo " 👤 Admin-Login:"
echo " Benutzername: admin"
echo " Passwort: admin"
echo ""
echo "📝 Nützliche Befehle:"
echo " docker compose logs -f web # Logs anzeigen"
echo " docker compose down # Projekt stoppen"
echo " docker compose up -d # Projekt starten"
echo ""
echo "🔍 Container Status:"
docker compose ps