#!/bin/bash set -e echo "" echo "╔══════════════════════════════════════╗" echo "║ Network-MGMT Startup ║" echo "╚══════════════════════════════════════╝" echo "" cd /var/www/html # ─── .env prüfen ─────────────────────────────────────────────────────────────── if [ ! -f ".env" ]; then echo "⚠ .env fehlt — kopiere .env.example ..." cp .env.example .env fi # ─── Auf Datenbank warten ────────────────────────────────────────────────────── echo "▶ Warte auf MariaDB ..." until php -r " \$dsn = 'mysql:host=' . getenv('DB_HOST') . ';port=' . (getenv('DB_PORT') ?: 3306) . ';dbname=' . getenv('DB_DATABASE'); try { new PDO(\$dsn, getenv('DB_USERNAME'), getenv('DB_PASSWORD')); exit(0); } catch (Exception \$e) { exit(1); } " 2>/dev/null; do echo " ... noch nicht bereit, warte 3s" sleep 3 done echo " ✓ Datenbank erreichbar" # ─── Composer ────────────────────────────────────────────────────────────────── if [ ! -d "vendor" ] || [ ! -f "vendor/autoload.php" ]; then echo "▶ Composer: Abhängigkeiten installieren ..." composer install --no-dev --optimize-autoloader --no-interaction --quiet echo " ✓ fertig" fi # ─── Assets bauen ────────────────────────────────────────────────────────────── if [ ! -d "public/build" ] && [ -f "package.json" ]; then echo "▶ Node: Assets bauen ..." npm ci --silent 2>/dev/null npm run build 2>/dev/null echo " ✓ fertig" fi # ─── App-Key ─────────────────────────────────────────────────────────────────── APP_KEY_VAL=$(grep "^APP_KEY=" .env | cut -d= -f2) if [ -z "$APP_KEY_VAL" ] || [ "$APP_KEY_VAL" = "" ]; then echo "▶ Generiere APP_KEY ..." php artisan key:generate --no-interaction --force fi # ─── Storage-Link ────────────────────────────────────────────────────────────── php artisan storage:link --no-interaction 2>/dev/null || true # ─── Berechtigungen ──────────────────────────────────────────────────────────── chmod -R 775 storage bootstrap/cache chown -R www-data:www-data storage bootstrap/cache 2>/dev/null || true # ─── Migrationen ─────────────────────────────────────────────────────────────── echo "▶ Datenbank: Migrationen ausführen ..." php artisan migrate --force --no-interaction echo " ✓ fertig" # ─── Cache ───────────────────────────────────────────────────────────────────── echo "▶ Cache aufbauen ..." php artisan config:cache --no-interaction 2>/dev/null php artisan route:cache --no-interaction 2>/dev/null php artisan view:cache --no-interaction 2>/dev/null echo " ✓ fertig" echo "" echo "✓ Network-MGMT läuft auf Port 80" echo "" # ─── Supervisor starten (nginx + php-fpm + scheduler) ───────────────────────── exec /usr/bin/supervisord -c /etc/supervisor/conf.d/supervisord.conf