fix storage link error on docker deploy
This commit is contained in:
@@ -41,6 +41,7 @@ Only publish HTTP and RTMP by default. Keep MediaMTX HLS behind Apache and keep
|
|||||||
- When changing Laravel runtime behavior, update the shared `x-app-environment` block unless the value belongs to one role only.
|
- When changing Laravel runtime behavior, update the shared `x-app-environment` block unless the value belongs to one role only.
|
||||||
- When changing queue behavior, prefer env-driven options on the `queue` service and `docker/app/entrypoint.sh`.
|
- When changing queue behavior, prefer env-driven options on the `queue` service and `docker/app/entrypoint.sh`.
|
||||||
- Keep `npm run build` after PHP setup and Composer install in `docker/app/Dockerfile`; the Wayfinder Vite plugin invokes `php artisan wayfinder:generate` during the build. The asset stage must also provide safe build-time Laravel env values, create Laravel writable directories such as `storage/framework/views`, and run `php artisan wayfinder:generate --with-form --no-interaction` before `npm run build` so failures are visible in Docker logs.
|
- Keep `npm run build` after PHP setup and Composer install in `docker/app/Dockerfile`; the Wayfinder Vite plugin invokes `php artisan wayfinder:generate` during the build. The asset stage must also provide safe build-time Laravel env values, create Laravel writable directories such as `storage/framework/views`, and run `php artisan wayfinder:generate --with-form --no-interaction` before `npm run build` so failures are visible in Docker logs.
|
||||||
|
- Do not call `php artisan storage:link --force` as `www-data` during container startup; `public/storage` lives in the root-owned image filesystem. Create the symlink as root in the entrypoint if it is missing.
|
||||||
- Keep deploy script behavior idempotent: repeat runs should update the Git checkout, rebuild, migrate, and restart services without deleting volumes.
|
- Keep deploy script behavior idempotent: repeat runs should update the Git checkout, rebuild, migrate, and restart services without deleting volumes.
|
||||||
- Keep generated secrets in `.env`; do not bake secrets into images or templates.
|
- Keep generated secrets in `.env`; do not bake secrets into images or templates.
|
||||||
|
|
||||||
|
|||||||
@@ -113,6 +113,7 @@ RUN composer dump-autoload --optimize --no-dev \
|
|||||||
storage/framework/views \
|
storage/framework/views \
|
||||||
storage/logs \
|
storage/logs \
|
||||||
bootstrap/cache \
|
bootstrap/cache \
|
||||||
|
&& if [ ! -e public/storage ]; then ln -s ../storage/app/public public/storage; fi \
|
||||||
&& chown -R www-data:www-data storage bootstrap/cache \
|
&& chown -R www-data:www-data storage bootstrap/cache \
|
||||||
&& chmod +x /usr/local/bin/nyone-entrypoint
|
&& chmod +x /usr/local/bin/nyone-entrypoint
|
||||||
|
|
||||||
|
|||||||
@@ -61,6 +61,16 @@ prepare_laravel_paths() {
|
|||||||
chown -R www-data:www-data storage bootstrap/cache
|
chown -R www-data:www-data storage bootstrap/cache
|
||||||
}
|
}
|
||||||
|
|
||||||
|
ensure_public_storage_link() {
|
||||||
|
mkdir -p public storage/app/public
|
||||||
|
|
||||||
|
if [[ -L public/storage || -e public/storage ]]; then
|
||||||
|
return 0
|
||||||
|
fi
|
||||||
|
|
||||||
|
ln -s ../storage/app/public public/storage
|
||||||
|
}
|
||||||
|
|
||||||
cache_laravel_bootstrap() {
|
cache_laravel_bootstrap() {
|
||||||
if [[ "${APP_OPTIMIZE_ON_BOOT:-true}" != "true" ]]; then
|
if [[ "${APP_OPTIMIZE_ON_BOOT:-true}" != "true" ]]; then
|
||||||
return 0
|
return 0
|
||||||
@@ -93,7 +103,7 @@ if [[ "${WAIT_FOR_SERVICES:-true}" == "true" ]]; then
|
|||||||
fi
|
fi
|
||||||
|
|
||||||
prepare_laravel_paths
|
prepare_laravel_paths
|
||||||
artisan storage:link --force >/dev/null || true
|
ensure_public_storage_link
|
||||||
cache_laravel_bootstrap
|
cache_laravel_bootstrap
|
||||||
|
|
||||||
case "$role" in
|
case "$role" in
|
||||||
|
|||||||
Reference in New Issue
Block a user