uot
@uot (uo yu)

Are you sure you want to delete the question?

Leaving a resolved question undeleted may help others!

【Laravel】docker環境にて画像が表示されない。

解決したいこと

docker環境にて、ユーザーがフォームから送信した画像を表示さたいです。

発生している問題・エラー

ローカル環境にて開発していたアプリにdocker環境を構築しました。
docker環境を構築後、画像が表示されません。すべてのディレクトリ情報はコピペで移しました。
他の機能はdockerのリンクにて表示や挙動は確認できています。

また画像に関してローカル環境では画像が表示されます。

環境

Laravel8

該当するソースコード

//dockerの画像の保存場所
backend>storage>app>public>public>image

//関係ありませんが、ローカル環境では下記で表示されます
storage>app>public>public>image
//表示させるビュー
<img  src="{{ asset('storage/public/image/'.$item->image)}}">
//こちらでも表示されませんでした
<img  src="{{ asset('storage/app/public/image/'.$item->image)}}">
<img  src="{{ asset('storage/app/public/public/image/'.$item->image)}}">

//関係ありませんが、ローカル環境では下記で表示されます
<img  src="{{ asset('storage/public/image/'.$item->image)}}">

自分で試したこと

下記コードを「実装しているディレクトリ」と「cd backend」に進んで行いました。
どちらの方法も、backend内の画像は表示されませんでした。
「実装しているディレクトリ」で行うとローカル環境では反映されます(もとに戻しました)

php artisan storage:link

0

2Answer

Comments

  1. @uot

    Questioner

    @skys215 さん
    ご回答ありがとうございます!
    一応docker内で必要と思いましたので、 backendファイルに進んで'php artisan storage:link'を行いました。
    もしかしてやり方が違ったでしょうか??
  2. プロジェクトではstorage/app/publicが基準となります。storage:linkした後のファイルはURLで/storageが基準となります。
    `asset()`は`/`が基準なので、`public>image`にあるファイルは`asset('/storage/public/image/'.$item->image)`であってると思います。

    docker内のプロジェクトフォルダーで`ls -al public/storage`を実行し、リンクされてるパスが合ってるかどうか確認してください。docker内の`プロジェクトフォルダー/storage/app/public`を指してるはずです。
    そうじゃなければ、docker内で`php artisan storage:link`を実行してください。実行後、`ls -al public/storage`で再確認してください。

解決致しました!
Dockerコンテナ内に入りphp artisan storage:linkを実行し解決しました!

これを気にdockerを勉強致します

お時間を頂きありがとうございました。

0Like

Your answer might help someone💌