mein-sterntours/init.sh
2026-01-23 17:34:40 +01:00

151 lines
4.1 KiB
Bash

#!/bin/bash
# Sterntours Laravel Projekt - Initialisierungsskript
# Dieses Script führt alle notwendigen Schritte zur Initialisierung des Projekts aus
set -e # Beendet das Script bei Fehlern
echo "================================================"
echo "Sterntours Laravel Projekt - Initialisierung"
echo "================================================"
echo ""
# Farben für Ausgabe
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
RED='\033[0;31m'
NC='\033[0m' # No Color
# Funktion für Erfolgsmeldungen
success() {
echo -e "${GREEN}$1${NC}"
}
# Funktion für Info-Meldungen
info() {
echo -e "${YELLOW}$1${NC}"
}
# Funktion für Fehler
error() {
echo -e "${RED}$1${NC}"
}
# 1. Prüfe ob Docker läuft
info "Prüfe Docker Installation..."
if ! command -v docker &> /dev/null; then
error "Docker ist nicht installiert!"
exit 1
fi
if ! docker info &> /dev/null; then
error "Docker läuft nicht! Bitte starte Docker."
exit 1
fi
success "Docker ist bereit"
# 2. Prüfe ob Composer installiert ist
info "Prüfe Composer Installation..."
if ! command -v composer &> /dev/null; then
error "Composer ist nicht installiert!"
exit 1
fi
success "Composer ist installiert"
# 3. .env Datei erstellen falls nicht vorhanden
info "Prüfe .env Datei..."
if [ ! -f .env ]; then
if [ -f .env.example ]; then
cp .env.example .env
success ".env Datei erstellt"
else
error ".env.example nicht gefunden!"
exit 1
fi
else
success ".env Datei existiert bereits"
fi
# 4. Composer Dependencies installieren
info "Installiere Composer Dependencies..."
composer install --no-interaction --prefer-dist --optimize-autoloader
success "Composer Dependencies installiert"
# 5. NPM Dependencies installieren
info "Prüfe Node.js Installation..."
if command -v npm &> /dev/null; then
info "Installiere NPM Dependencies..."
npm install
success "NPM Dependencies installiert"
else
error "Node.js/NPM nicht gefunden - überspringe NPM Installation"
fi
# 6. Application Key generieren
info "Generiere Application Key..."
php artisan key:generate --force
success "Application Key generiert"
# 7. Erstelle proxy Netzwerk falls nicht vorhanden
info "Erstelle Docker Proxy Netzwerk..."
if ! docker network inspect proxy &> /dev/null; then
docker network create proxy
success "Proxy Netzwerk erstellt"
else
success "Proxy Netzwerk existiert bereits"
fi
# 8. Docker Container starten
info "Starte Docker Container (Laravel Sail)..."
./vendor/bin/sail up -d
success "Docker Container gestartet"
# 9. Warte bis Datenbank bereit ist
info "Warte auf Datenbank..."
sleep 10
success "Datenbank sollte bereit sein"
# 10. Datenbank Migrationen ausführen
info "Führe Datenbank Migrationen aus..."
./vendor/bin/sail artisan migrate --force
success "Datenbank Migrationen ausgeführt"
# 11. Storage Links erstellen
info "Erstelle Storage Links..."
./vendor/bin/sail artisan storage:link
success "Storage Links erstellt"
# 12. Cache leeren
info "Leere Application Cache..."
./vendor/bin/sail artisan config:clear
./vendor/bin/sail artisan cache:clear
./vendor/bin/sail artisan view:clear
./vendor/bin/sail artisan route:clear
success "Cache geleert"
# 13. Optimierung (optional)
info "Optimiere Application..."
./vendor/bin/sail artisan config:cache
./vendor/bin/sail artisan route:cache
./vendor/bin/sail artisan view:cache
success "Application optimiert"
echo ""
echo "================================================"
echo -e "${GREEN}✓ Initialisierung erfolgreich abgeschlossen!${NC}"
echo "================================================"
echo ""
echo "Dein Projekt ist nun bereit:"
echo " - Haupt-URL: https://mein.sterntours.test"
echo " - Alternative URL: https://sterntours.test"
echo " - Mailpit Dashboard: https://sterntours-mail.test"
echo " - Vite Assets: https://assets.sterntours.test"
echo ""
echo "Nützliche Befehle:"
echo " - Container stoppen: ./vendor/bin/sail down"
echo " - Container starten: ./vendor/bin/sail up -d"
echo " - Logs anzeigen: ./vendor/bin/sail logs -f"
echo " - Artisan Befehle: ./vendor/bin/sail artisan <command>"
echo " - Tests ausführen: ./vendor/bin/sail test"
echo ""