💡 本記事は、生成AI出力の引用部分以外は全て人間が書きました。
まとめ
- Laravel Boost | Laravel 13.x – The clean stack for Artisans and agents を oki2a24/laravel-boilerplate に導入したので、プロジェクトルートに Laravel を配置したくなった。
- 以前(2 ~ 3 年前)は、 Docker Compose と Laravel の .env ファイル名が衝突し、 Docker ではファイル名の変更ができず、 Laravel は変更できたが運用コスト高かったので、プロジェクトルートは docker/、 laravel/ の2つのディレクトリを置くようにしていた。
- 現在(2026年5月)、 Docker Compose は .env ファイル名を変更して運用できる、また、 Laravel Sail の考え方としてプロジェクトルートに Laravel を配置する前提であることから、解決できるはずである。
実際にやっていくのは、これからです。
悩み
Laravel Boost を導入しました。 laravel/ に入っています。 今、その親ディレクトリのプロジェクトルートで Gemini CLI を起動しています。 このままでは Laravel Boost は使えません。一応の解決策として、プロジェクトルートディレクトリからシンボリックリンクを貼るなどしました。がワークアラウンド感があります。 Laravel Boost を自然に使えるようにするために laravel/ をプロジェクトルートに移動する、または他のいい方法で解決したい。 現在プロジェクトルートには Docker 環境のディレクトリと Laravel システムのディレクトリという構成になっています。
これは、数年間いろいろ試した上での苦肉の策として、今現在このような構成となっています。もともとはプロジェクトルートディレクトリは Laravel のソースコードを置き、そこに Docker のディレクトリや docker-compose.yml を置いていました。 しかし、この場合 .env ファイルが衝突するのです。Docker Compose の方での .env ファイルの名前を変えるということができたらよかったのですが、当時はできませんでした。今はどうかは知りません。
そんなことで妥協として Laravel の方で、 .env ファイル名を変えることをいちど試してみました。できたはできたのですが、今はもうあまり覚えてないんですが、どこかのタイミングでうまくいかないことがあったり、 php artisan コマンドで毎回 .env ファイル名を指定するのが面倒であったり、 .env ファイル指定ができないコマンドがあったような記憶があったりして、最終的にやめましてた。そして、現在の構成に妥協しました。
そして、現在、Laravel Boost の登場により、またドキュメントルートに Laravel を配置することを検討したいと思いました。
生成AIに頼んだ(Gemini CLI)
以上の背景とともに、「インターネットでベストプラクティスを調べて適用する計画を立ててください。」としたところ、なんかできそうです。
実現できる根拠として重要なのは以下の点です。生成AIの出力を抜粋します。
公式ドキュメントのポイント
-
Docker公式 (How to use environment variables in Compose (https://docs.docker.com/compose/how-tos/environment-variables/))
- 「env_file で複数ファイルを指定でき、順番に読み込まれる」 ことが明記されています。
- これにより、[.env, .env.docker] の順で指定すれば、共通設定を .env で持ちつつ、Docker固有の設定(ホスト側のポート等)だけを .env.docker で上書きする、というスマートな運用が可能です。
-
Laravel公式 (Laravel Sail Introduction (https://laravel.com/docs/11.x/sail#introduction))
- 「Sailの核心(heart)は、ルートにある compose.yaml と sail スクリプトである」 とされています。
- Laravelはプロジェクトルートが「世界の中心」であることを前提としており、AI(Laravel Boost)もこの思想に基づいて設計されています。
おわりに
課題を Gemini CLI に入力して、目処が立ちそうと分かった時点で、この記事を書いています。
数年の悩みがこれで解決できそうです。これからやっていくので、もしかしたらダメかもしれませんが、きっとうまくいくでしょう。
Laravel のプロジェクトなのですから、ずっと Laravel をプロジェクトルートに置きたかったのですよね。モヤモヤがこれでひとつ解決できると、嬉しいです。
では、これから Gemini CLI に続きをやっていてもらおうと思います。
以上です。
