Files
cleftlipdata/docker-entrypoint.sh
T
2026-06-06 10:05:39 +07:00

87 lines
2.6 KiB
Bash
Executable File

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