#!/bin/sh set -e run_as_www() { # prefer su-exec (alpine), fallback to runuser if available, otherwise run directly if command -v su-exec >/dev/null 2>&1; then su-exec www "$@" elif command -v runuser >/dev/null 2>&1; then runuser -u www -- "$@" else "$@" fi } # Build front-end assets if Vite manifest is missing if [ ! -f /var/www/public/build/manifest.json ]; then echo "Building front-end assets (vite)..." run_as_www npm ci run_as_www npm run build fi # Wait for database directory to be mounted if [ ! -f /var/www/database/database.sqlite ]; then echo "Creating database..." # create the sqlite file as the www user so ownership matches app files run_as_www sh -c 'touch /var/www/database/database.sqlite' run_as_www php artisan migrate --force fi # Fix storage permissions echo "Fixing storage permissions..." chown -R www:www /var/www/storage /var/www/bootstrap/cache chmod -R 775 /var/www/storage /var/www/bootstrap/cache # Execute the main command exec "$@"