v0.10.0: Docker + Update-Funktion + deploy.sh
This commit is contained in:
@@ -0,0 +1,80 @@
|
||||
#!/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
|
||||
Reference in New Issue
Block a user