【Laravel9】docker環境でstorageに保存した画像が表示できない場合

win10+WSL+Ubuntu+docker 環境でLaravel9 を使っていますが,storageに保存した画像が 404 エラーで表示できなかったので,解決法。

結論 sail shell を使う

投稿画面からアップロードした画像は storage/app/public に保存されるのですが,この画像をページ上で表示したい場合,ファイルに直接アクセスすることはできないので,public にシンボリックリンクを貼る必要があります。

> php artisan storage:link

ところが docker 上で環境構築している場合,これではファイルにアクセスしようとしても 404 エラーが出て表示できません。シンボリックリンクの貼り方が間違っているからです。

正しくは,コンテナ内に入ってから上のコマンドを実行します。

> sail shell
> php artisan storage:link

私の場合は,これで解決しました。

例えば,storage/app/public/image/photo.jpg で保存されているファイルは

localhost/image/photo.jpg

でブラウザに表示できます。