Open1

DockerでのLaravelについて

JavaCurryJavaCurry

昨日まで問題なく動いていたのにポートにアクセスしても404 not foundになる。PHPコンテナでphp artisan serveを実行するとアクセスできるようになったもののPCとDockerを再起動すると、またアクセスできない問題が発生。

ChatGPTの回答

「もしphp artisan serveを実行することでLaravelアプリケーションが正しく動作するようになる場合、それはLaravelのビルトイン開発用サーバーが正しく設定されていないか、Dockerコンテナ内で適切にポートマッピングされていない可能性が高いです。こういった場合、Dockerコンテナの設定やポートのマッピングを確認する必要があります」とのこと。

対策

default.confのポートと同じにするためdocker-composeの設定を変更。

Before
ports:
  - "8080:80"
After
ports:
  - "80:80"
default.conf
server {
    listen 80;
}

変更した結果

これで表示されたが腑に落ちない。ホスト側の8080にアクセスしたらコンテナ側の80にマッピングされるという内容なので競合していたのならまだしも、ホスト側のポートを変えることに意味があったとは思えない。ただ、これで直ったのも事実。事前にキャッシュはクリア済みなので修正したのはここだけ。直った理由がわからないからなんの勉強にもなってない気がする。

Laravelの導入失敗に言及している各所のブログの記事

  • try_files $uri $uri/ /index.php?$query_string;の追加
  • docker-compose.yamlのvolumesを/var/www/のようにhtmlを削除
  • storageフォルダの権限を755に変更

実際のところはどうなのか

Laravelのバージョンによるらしいが権限の変更が必要なのは確認済み。

何が正しいのかわからないが動いているので経過観察。