#!/bin/sh # ────────────────────────────────────────────────────────────────────────────── # eCert MBIP — Container Entrypoint # Jalankan sebelum php-fpm bermula: # 1. Tunggu MySQL # 2. Install Composer deps (dev sahaja) # 3. Generate APP_KEY jika tiada # 4. Migrate + seed AdminSeeder # 5. Storage link # 6. Cache (prod sahaja) # ────────────────────────────────────────────────────────────────────────────── set -e echo "" echo "╔══════════════════════════════════════╗" echo "║ eCert MBIP — Container Start ║" echo "╚══════════════════════════════════════╝" echo "" # ── 1. Tunggu MySQL bersedia ────────────────────────────────────────────────── DB_HOST="${DB_HOST:-db}" DB_PORT="${DB_PORT:-3306}" DB_DATABASE="${DB_DATABASE:-ecert_mbip}" DB_USERNAME="${DB_USERNAME:-root}" DB_PASSWORD="${DB_PASSWORD:-secret}" echo "⏳ Menunggu MySQL di ${DB_HOST}:${DB_PORT}..." until mysqladmin ping \ -h "${DB_HOST}" \ -P "${DB_PORT}" \ -u "${DB_USERNAME}" \ --password="${DB_PASSWORD}" \ --silent 2>/dev/null; do printf "." sleep 2 done echo "" echo "✓ MySQL bersedia." # ── 2. Pasang Composer dependencies (development sahaja) ───────────────────── if [ "${APP_ENV}" != "production" ] && [ ! -d /var/www/vendor ]; then echo "📦 Memasang Composer dependencies (dev)..." composer install \ --no-interaction \ --no-progress \ --prefer-dist fi # ── 3. Generate APP_KEY jika kosong ─────────────────────────────────────────── if [ -z "${APP_KEY}" ] || [ "${APP_KEY}" = "" ]; then echo "🔑 Menjana APP_KEY..." php artisan key:generate --force fi # ── 4. Database migration ───────────────────────────────────────────────────── echo "🗄 Menjalankan migration..." php artisan migrate --force # Seed admin account (idempotent — guna firstOrCreate) echo "👤 Seeding AdminSeeder..." php artisan db:seed --class=AdminSeeder --force # ── 5. Storage symbolic link ────────────────────────────────────────────────── php artisan storage:link 2>/dev/null || true # ── 6. Cache (production sahaja) ────────────────────────────────────────────── if [ "${APP_ENV}" = "production" ]; then echo "⚡ Caching config, routes, views..." php artisan config:cache php artisan route:cache php artisan view:cache php artisan event:cache # Opcache: matikan validate_timestamps untuk prestasi # (sudah dikonfigur dalam php.ini prod) fi echo "" echo "✅ Aplikasi bersedia." echo "" exec "$@"