LaravelとDocker:初心者向けの簡単セットアップガイド
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の世界への第一歩となることを願っています。