initial commit
This commit is contained in:
Executable
+86
@@ -0,0 +1,86 @@
|
||||
#!/bin/sh
|
||||
set -e
|
||||
|
||||
# If running as root, fix permissions on volumes
|
||||
if [ "$(id -u)" = "0" ]; then
|
||||
mkdir -p /var/www/html/storage/framework/cache/data
|
||||
mkdir -p /var/www/html/storage/framework/sessions
|
||||
mkdir -p /var/www/html/storage/framework/testing
|
||||
mkdir -p /var/www/html/storage/framework/views
|
||||
mkdir -p /var/www/html/storage/logs
|
||||
mkdir -p /var/www/html/storage/app/public
|
||||
mkdir -p /var/www/html/storage/app/temp
|
||||
mkdir -p /var/www/html/public/photos
|
||||
chown -R app:app /var/www/html/storage /var/www/html/public/photos
|
||||
fi
|
||||
|
||||
# 1. Wait for MySQL
|
||||
echo "Waiting for MySQL..."
|
||||
for i in $(seq 1 30); do
|
||||
php -r "
|
||||
\$pdo = @new PDO(
|
||||
'mysql:host=' . getenv('DB_HOST') . ';port=' . getenv('DB_PORT') . ';dbname=' . getenv('DB_DATABASE'),
|
||||
getenv('DB_USERNAME'),
|
||||
getenv('DB_PASSWORD'),
|
||||
[PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION]
|
||||
);
|
||||
echo 'OK';
|
||||
" 2>/dev/null | grep -q 'OK' && break
|
||||
echo " attempt $i/30 — MySQL not ready, retrying in 2s..."
|
||||
sleep 2
|
||||
done
|
||||
|
||||
# Verify connection was established
|
||||
php -r "
|
||||
\$pdo = @new PDO(
|
||||
'mysql:host=' . getenv('DB_HOST') . ';port=' . getenv('DB_PORT') . ';dbname=' . getenv('DB_DATABASE'),
|
||||
getenv('DB_USERNAME'),
|
||||
getenv('DB_PASSWORD'),
|
||||
[PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION]
|
||||
);
|
||||
" || { echo "Failed to connect to MySQL after 60s"; exit 1; }
|
||||
|
||||
echo "MySQL is ready."
|
||||
|
||||
# 2. Generate APP_KEY if missing
|
||||
if [ -z "$(php -r "echo getenv('APP_KEY') ?: '';")" ]; then
|
||||
echo "Generating APP_KEY..."
|
||||
php artisan key:generate --force
|
||||
fi
|
||||
|
||||
# 3. Import SQL dump if tables don't exist
|
||||
TABLE_COUNT=$(php -r "
|
||||
\$pdo = @new PDO(
|
||||
'mysql:host=' . getenv('DB_HOST') . ';port=' . getenv('DB_PORT') . ';dbname=' . getenv('DB_DATABASE'),
|
||||
getenv('DB_USERNAME'),
|
||||
getenv('DB_PASSWORD')
|
||||
);
|
||||
\$stmt = \$pdo->query('SELECT COUNT(*) FROM information_schema.tables WHERE table_schema = DATABASE()');
|
||||
echo \$stmt->fetchColumn();
|
||||
")
|
||||
|
||||
if [ "$TABLE_COUNT" -eq 0 ]; then
|
||||
echo "Importing SQL dump..."
|
||||
mysql -h "$DB_HOST" --ssl=0 -u "$DB_USERNAME" -p"$DB_PASSWORD" "$DB_DATABASE" < /var/www/html/humicpro_cleftlipdata.sql
|
||||
echo "SQL dump imported."
|
||||
fi
|
||||
|
||||
# 4. Run migrations
|
||||
echo "Running migrations..."
|
||||
php artisan migrate --force
|
||||
|
||||
# 5. Cache
|
||||
echo "Optimizing cache..."
|
||||
php artisan config:cache
|
||||
php artisan route:cache
|
||||
php artisan view:cache
|
||||
|
||||
# 6. Storage link
|
||||
php artisan storage:link 2>/dev/null || true
|
||||
|
||||
# 7. Switch to app user and start PHP-FPM
|
||||
if [ "$(id -u)" = "0" ]; then
|
||||
exec su-exec app php-fpm
|
||||
else
|
||||
exec php-fpm
|
||||
fi
|
||||
Reference in New Issue
Block a user