質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.47%
Laravel

LaravelとはTaylor Otwellによって開発された、オープンソースなPHPフレームワークです。Laravelはシンプルで表現的なシンタックスを持ち合わせており、ウェブアプリケーション開発の手助けをしてくれます。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

Docker

Dockerは、Docker社が開発したオープンソースのコンテナー管理ソフトウェアの1つです

Q&A

解決済

1回答

2557閲覧

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

uoyuta

総合スコア7

Laravel

LaravelとはTaylor Otwellによって開発された、オープンソースなPHPフレームワークです。Laravelはシンプルで表現的なシンタックスを持ち合わせており、ウェブアプリケーション開発の手助けをしてくれます。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

Docker

Dockerは、Docker社が開発したオープンソースのコンテナー管理ソフトウェアの1つです

0グッド

0クリップ

投稿2021/09/20 09:49

編集2021/09/23 03:55

解決したいこと

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

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

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

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

###環境
Laravel8

該当するソースコード

//dockerの画像の保存場所 backend>storage>app>public>public>image //関係ありませんが、ローカル環境では下記で表示されます storage>app>public>public>image

php

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

自分で試したこと

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

php artisan storage:link

###追記
現状まだ解決していない為、Qiitaにも質問を行いました。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

m.ts10806

2021/09/20 11:49

シンボリックリンクはりましたか?
uoyuta

2021/09/20 12:33 編集

ご回答ありがとうございます。 はい、下記コードを「実装しているディレクトリ」と「cd backend」に進んで行いました。 どちらの方法も、backend内の画像は表示されませんでした。 「実装しているディレクトリ」で行うとローカル環境では反映されます php artisan storage:link
uoyuta

2021/09/20 12:33

失礼しました。 編集しました。 php artisan storage:link を実行しました。
uoyuta

2021/09/22 03:41

現状まだ解決しないため、Qiitaにも質問を行いました。
AbeTakashi

2021/09/22 04:03

Docker以外の環境情報がなにも書かれてませんのでなんとも言えないところがあるのですが、'php artisan storage:link'のコマンドはDockerコンテナ内に入ってから叩いてますか? ホスト上から叩くとパスの情報などが正しくならないので上手く動かないと思います。コンテナ内で叩いてるなら、その旨は追記した方がいいでしょう。 あと、Qiitaにも質問したということもコメント内ではなく質問文内に追記した方が良いと思いますよ。
uoyuta

2021/09/23 03:52

ご回答ありがとうございます! 一応docker内で必要と思いましたので、 backendファイルに進んで'php artisan storage:link'を行いました。 もしかしてやり方が違ったでしょうか??
guest

回答1

0

ベストアンサー

php artisan storage:link

上記コマンドを叩いているようですが、おそらくDockerコンテナ内に入らず叩いてますね(ホスト上で叩いてる状態に見えます)。コンテナに入るには以下のようなコマンドを叩く必要があります。

docker exec -i -t コンテナ名 /bin/bash

コンテナ名は

docker ps

で分かると思います。複数出てきたら、その中のWEBサーバを担当するコンテナのコンテナ名を見つけて入れるようにしてください。

コンテナ内に入れたら、cdでLaravelプロジェクトのあるディレクトリに移動してからphp artisan storage:linkを叩けばこの問題は解決するのでは?と思います。

参考)
https://laraweb.net/environment/6433/

投稿2021/09/23 05:03

AbeTakashi

総合スコア4549

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

uoyuta

2021/09/23 12:08

ご回答ありがとうございます! 参考にさせて頂き、Dockerコンテナ内に入りphp artisan storage:linkを実行し解決しました! これを気にdockerを勉強致します
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.47%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問