Files
Network-MGMT/docker/entrypoint.sh
T

81 lines
4.1 KiB
Bash

#!/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