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

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

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

HerokuはHeroku社が開発と運営を行っているPaaSの名称です。RubyやNode.js、Python、そしてJVMベース(Java、Scala、Clojureなど)の複数のプログラミング言語をサポートしている。

Laravel

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

Docker

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

Q&A

0回答

1768閲覧

Docker Laravel8 「404 Not Found nginx」で困っています

yuuu752

総合スコア18

Heroku

HerokuはHeroku社が開発と運営を行っているPaaSの名称です。RubyやNode.js、Python、そしてJVMベース(Java、Scala、Clojureなど)の複数のプログラミング言語をサポートしている。

Laravel

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

Docker

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

0グッド

0クリップ

投稿2021/10/30 06:50

編集2021/10/31 10:59

前提・実現したいこと

herokuへデプロイしたアプリで、S3へ画像保存できるように修正中です。
アプリはlaravel8とdockerで作成されています。
変更点をコミットしherokuへpushした後、アプリURLへアクセスした際にエラーが発生しました。

発生している問題・エラーメッセージ

push前は問題なくアクセスできていたので、直前コミットの内容に原因があるかと考えています。

//アクセスエラー 404 Not Found nginx
//heroku log 2021-10-28T13:48:03.789168+00:00 heroku[web.1]: State changed from down to starting 2021-10-28T13:48:05.890658+00:00 heroku[web.1]: Starting process with command `vendor/bin/heroku-php-nginx -C nginx_app.conf` 2021-10-28T13:48:08.076489+00:00 app[web.1]: Using Nginx server-level configuration include 'nginx_app.conf' 2021-10-28T13:48:08.122874+00:00 app[web.1]: Detected 536870912 Bytes of RAM 2021-10-28T13:48:08.151528+00:00 app[web.1]: PHP memory_limit is 128M Bytes 2021-10-28T13:48:08.158348+00:00 app[web.1]: Starting php-fpm with 4 workers... 2021-10-28T13:48:08.277790+00:00 app[web.1]: Starting nginx... 2021-10-28T13:48:08.478610+00:00 heroku[web.1]: State changed from starting to up 2021-10-28T13:48:09.857974+00:00 app[web.1]: 10.1.45.93 - - [28/Oct/2021:13:48:09 +0000] "GET /login HTTP/1.1" 404 548 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/95.0.4638.54 Safari/537.36 2021-10-28T13:48:09.858205+00:00 heroku[router]: at=info method=GET path="/login" host=floating-refuge-64986.herokuapp.com request_id=47726ccf-805f-470c-8108-e3979f17c963 fwd="118.1.3.130" dyno=web.1 connect=0ms service=0ms status=404 bytes=691 protocol=http

該当のソースコード

・直前コミット内容

1.default.conf追加

// /laravel-zaikokanri/docker/nginx/default.conf server { listen 80; server_name example.com; root /work/public; add_header X-Frame-Options "SAMEORIGIN"; add_header X-XSS-Protection "1; mode=block"; add_header X-Content-Type-Options "nosniff"; index index.php; charset utf-8; location / { try_files $uri $uri/ /index.php?$query_string; } location = /favicon.ico { access_log off; log_not_found off; } location = /robots.txt { access_log off; log_not_found off; } error_page 404 /index.php; location ~ .php$ { fastcgi_pass app:9000; fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name; include fastcgi_params; } location ~ /.(?!well-known).* { deny all; } proxy_buffer_size 32k; proxy_buffers 50 32k; proxy_busy_buffers_size 32k; }

2.Procfile2行目追加

web: vendor/bin/heroku-php-apache2 public/ web: vendor/bin/heroku-php-nginx -C nginx_app.conf

3.envでAWS設定

AWS_ACCESS_KEY_ID=?????? AWS_SECRET_ACCESS_KEY=?????? AWS_DEFAULT_REGION=?????? AWS_BUCKET=??????

4.filesystems.phpでS3設定項目追加

'disks' => [ 'local' => [ 'driver' => 'local', 'root' => storage_path('app'), ], 'public' => [ 'driver' => 'local', 'root' => storage_path('app/public'), 'url' => env('APP_URL') . '/storage', 'visibility' => 'public', ], 's3' => [ 'driver' => 's3', 'key' => env('AWS_ACCESS_KEY_ID'), 'secret' => env('AWS_SECRET_ACCESS_KEY'), 'region' => env('AWS_DEFAULT_REGION'), 'bucket' => env('AWS_BUCKET'), 'url' => env('AWS_URL'), 'endpoint' => env('AWS_ENDPOINT'), ], ],

5.StockControllerのaddDoneメソッド内で、本来はローカルDBに画像保存させていたとこをS3に保存するよう変更。

// /laravel-zaikokanri/backend/app/Http/Controllers/StockController.php public function addDone(Request $request) { $stock = new Stock; //Stockインスタンス作成(保存作業) $form = $request->all(); //保管する値を用意 unset($form['_token']); //フォームに追加される非表示フィールド(テーブルにない)「_token」のみ削除しておく $stock->fill($form); //インスタンスに値を設定 //画像ファイルの保存場所移動 $stock->image = "dummy.jpg"; if ($request->image !== null) { $image = Storage::get('public/tmp/' . $request->image); $path = Storage::disk('s3')->put($request->image, $image, 'public'); $stock->image = Storage::disk('s3')->url($path); } $stock->save(); //インスタンスを保存 return redirect('/list'); }

試したこと

・エラーについて調べて下記サイトを発見。
参考サイト
サイト記載の通り、herokuの環境変数でアプリのURLを設定しなおしてみましたが、変わらずエラーが出てしまいます。

heroku config:set APP_URL= http://floating-refuge-64986.herokuapp.com

今のところ原因が分からず対処に困っているので、もし logやコミット内容で404エラーに関係していそうな箇所があればご指摘お願い致します。

補足情報(FW/ツールのバージョンなど)

docker、laravel8、heroku

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

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

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

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

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

guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問