add easy-to-start-script
This commit is contained in:
parent
ddc3ff976e
commit
7b0d4b76d7
3 changed files with 201 additions and 3 deletions
142
start_project.sh
Executable file
142
start_project.sh
Executable file
|
@ -0,0 +1,142 @@
|
|||
#!/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
|
Loading…
Add table
Add a link
Reference in a new issue