fedi-feed-router/docker/production/start-app.sh

51 lines
1.4 KiB
Bash
Raw Normal View History

2025-08-02 03:22:09 +02:00
#!/bin/sh
# Create .env file if it doesn't exist
2025-08-12 12:17:27 +02:00
if [ ! -f /var/www/html/backend/.env ]; then
cp /var/www/html/backend/.env.example /var/www/html/backend/.env 2>/dev/null || touch /var/www/html/backend/.env
2025-08-02 03:22:09 +02:00
fi
2025-08-12 20:05:18 +02:00
# Wait for database to be ready using PHP
2025-08-02 03:22:09 +02:00
echo "Waiting for database..."
2025-08-12 20:05:18 +02:00
until php -r "
\$host = getenv('DB_HOST') ?: 'db';
\$user = getenv('DB_USERNAME') ?: 'ffr_user';
\$pass = getenv('DB_PASSWORD');
\$db = getenv('DB_DATABASE') ?: 'ffr';
try {
\$pdo = new PDO(\"mysql:host=\$host;dbname=\$db\", \$user, \$pass, [
PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
PDO::MYSQL_ATTR_SSL_VERIFY_SERVER_CERT => false
]);
echo 'Database ready';
exit(0);
} catch (Exception \$e) {
exit(1);
}
" 2>/dev/null; do
2025-08-02 03:22:09 +02:00
echo "Database not ready, waiting..."
sleep 1
done
echo "Database connection established!"
# Generate app key if not set
2025-08-12 12:17:27 +02:00
if ! grep -q "APP_KEY=base64:" /var/www/html/backend/.env; then
cd /var/www/html/backend && php artisan key:generate --force
2025-08-02 03:22:09 +02:00
fi
# Laravel optimizations for production
2025-08-12 12:17:27 +02:00
cd /var/www/html/backend
2025-08-02 03:22:09 +02:00
php artisan config:cache
php artisan route:cache
php artisan view:cache
# Run migrations
2025-08-12 12:17:27 +02:00
cd /var/www/html/backend
2025-08-02 03:22:09 +02:00
php artisan migrate --force
2025-08-12 12:17:27 +02:00
# Run all seeders (same as dev)
cd /var/www/html/backend
php artisan db:seed --force
2025-08-02 03:22:09 +02:00
# Start supervisor to manage nginx and php-fpm
supervisord -c /etc/supervisord.conf