まえがき
Dockerは、アプリケーションの開発、配布、実行を簡単にするコンテナプラットフォームです。
Laravel開発にDockerを使用することで、環境設定の煩雑さを解消し、どこでも一貫した開発環境を保つことができます。
この記事では、Dockerを使ってLaravelを始める方法を初心者にも分かりやすく説明します。
Dockerとは?
Dockerは、アプリケーションとその依存関係をコンテナという形でパッケージ化します。
これにより、異なる環境間でのアプリケーションの実行を一貫して行えるようになります。
LaravelのDocker環境の構築
必要なツール
- Docker Desktopのインストール
- Docker Compose(Docker Desktopに含まれています)
Laravelプロジェクトのセットアップ
1.Laravel環境構築のルートディレクトリを作成
まず、適当な場所にsample-projectsディレクトリを作成します。sample-projectsディレクトリをLaravel環境構築のルートディレクトリとします。
ここに各プロジェクトのディレクトリを作成していくイメージになります。
2.Docker Composeファイルの作成
PHPはComposerのインストールが必要なため、公式イメージをベースにしてComposerをインストールするDockerfileを作成してルートディレクトリに配置します。
| |
次にdocker-compose.ymlファイルをルートディレクトリに作成し、必要なサービス(例: PHP、MySQL、Nginx)を定義します。
appの部分がPHPなので上記で作成したdockerfileを指定します。
今回test1というプロジェクトを作成するため、DB名はtest1になっています。
| |
※MYSQL_ROOT_PASSWORDは適宜書き換えて下さい
※開発環境のためパスワードを直書きしていますが、本番環境ではパスワードは別の方法で設定しましょう
この時点のファイル構成は下記のようになっています。
| |
3.Docker Composeを使ってコンテナを起動
プロジェクトのルートディレクトリでコマンドラインで以下のコマンドを実行し、Docker Composeを使用してコンテナを起動します。
| |
4.Laravelをインストール
| |
今回はLaravel installerを使用して、コンテナ内にLaravelをインストールします。
laravelはバージョンによって手順や設定が変わることが多いため、バージョンを指定しています。
5.Laravelプロジェクトの作成
Laravelプロジェクトを作成します。これもコンテナ内で行うことができます。test1というプロジェクトを作成してみましょう。
| |
上記コマンドを実行すると1つ目の選択肢が出力されます。
- No starter kit
- Laravel Breeze
- Laravel Jetstream
Laravel BreezeやLaravel Jetstreamはそれぞれ便利なパッケージが最初からインストールされているものになります。
今回はテストで作ってみるだけなので、No starter kitを選択しましょう。
次にテストフレームワークの選択肢が出力されます。
- Pest
- PHPUnit
こちらはとりあえずPestを選択しましょう。PestとPHPUnitについては別で記事を書く予定です。
次にGitリポジトリの作成を行うかの選択肢が出力されます。
今回は特に使わないのでNoを選択します。
ここで必要なパッケージのダウンロードとインストールが実施されます。
インストール完了後、使用するデータベースの選択肢が出力されます。
- SQLite
- MySQL
- MariaDB
- PostgreSQL
- SQL Server
こちらはMySQLを選択します。
次はマイグレーションを実行するかどうかの選択肢が出力されます。
こちらはyesを選択しましょう。
そうでないと実行に必要なテーブルが作成されません。
6.アプリケーションのアクセス
| |
上記コマンドを実行後、ブラウザでhttp://localhost:8000
にアクセスしてみましょう。
※http://0.0.0.0:8000にアクセスしても繋がらないのでご注意ください
すると下記画像のようにInternal Server Errorが表示されると思います。
エラーメッセージを確認すると、どうやらMySQLのDBにアクセスできていないようです。
様々な原因が考えられますが、まずは接続情報が正しいか確認してみましょう。
test1/.envファイルの22行目を見てみるとDB関連の設定は下記のようになっていました。
| |
DB_DATABASEはプロジェクトを作成したコマンドのプロジェクト名test1が設定されていますが、DB_HOSTはデフォルトのIPアドレスに、DB_PASSWORDは未設定になっていますね。docker-compose.ymlで設定したDBのホスト名はdbになっていますのでまずはこちらをdbに修正します。
次にパスワードはtest1234に設定していますのでこちらも修正します。
修正後の.envファイルは次のようになります。
| |
今回docker-composeで作成しているため.envファイルのユーザーがrootになっており、修正しようとすると書き込みができないはずです。
ですので、下記コマンドで自分のユーザーに設定しなおしましょう。
| |
権限を設定しなおして.envファイルを保存するとartisan serveコマンドのプロンプトに下記メッセージが表示されるはずです。
| |
laravelは.envファイルの修正を監視していて、修正されると即座に更新されるようになっています。
では、もう一度ブラウザでhttp://localhost:8000
にアクセスしてみましょう。
どうでしょうか?今度はエラーにならずデフォルトの画面が表示されたと思います。
まとめ
Dockerを使用することで、Laravelの開発環境を素早く簡単に構築できます。
これにより、開発プロセスがスムーズになり、環境依存の問題を避けることができます。
このガイドが、LaravelとDockerの世界への第一歩となることを願っています。