Keep the dev container as root for s6 init so composer can create vendor/ on root-owned mounts, then chown writable paths to www-data. Move init-setup into a shell script and expose VITE_HOST/PORT for remote HMR (LAN/Tailscale) with Vite listening on 0.0.0.0.
42 lines
1.3 KiB
Bash
Executable file
42 lines
1.3 KiB
Bash
Executable file
#!/command/with-contenv sh
|
|
set -eu
|
|
|
|
cd /var/www/html
|
|
|
|
# When the project is bind-mounted, host ownership may be root:root while the
|
|
# app runs as www-data (UID 1000). Fix the minimum needed so composer/laravel
|
|
# can write, without a recursive chown of the whole tree.
|
|
prepare_bind_mount() {
|
|
mkdir -p \
|
|
storage/framework/cache \
|
|
storage/framework/sessions \
|
|
storage/framework/views \
|
|
storage/logs \
|
|
bootstrap/cache
|
|
|
|
if [ "$(id -u)" = "0" ]; then
|
|
# Top-level only: allows creating vendor/ when the mount is root-owned
|
|
chown www-data:www-data /var/www/html 2>/dev/null || true
|
|
chown -R www-data:www-data storage bootstrap/cache 2>/dev/null || true
|
|
git config --global --add safe.directory /var/www/html 2>/dev/null || true
|
|
fi
|
|
}
|
|
|
|
prepare_bind_mount
|
|
|
|
echo "👉 init-setup: composer install..."
|
|
# Run as root when needed so a root-owned bind mount cannot block vendor/
|
|
# creation, then hand writable paths to www-data for PHP-FPM.
|
|
composer install --no-interaction
|
|
|
|
echo "👉 init-setup: migrate..."
|
|
php artisan migrate --step --force
|
|
|
|
echo "👉 init-setup: artisan dev --init..."
|
|
php artisan dev --init
|
|
|
|
if [ "$(id -u)" = "0" ]; then
|
|
chown -R www-data:www-data vendor storage bootstrap/cache 2>/dev/null || true
|
|
fi
|
|
|
|
echo "👉 init-setup: done"
|