LaravelとDockerで開発環境を1から構築!初心者向け完全ガイド
生徒
「Laravelというものを使ってWebサイトを作ってみたいのですが、準備が難しそうで不安です。」
先生
「大丈夫ですよ。最近はDocker(ドッカー)という道具を使うことで、初心者の方でも自分のパソコンを汚さずに、プロと同じ開発環境を簡単に作ることができます。」
生徒
「Dockerを使うと、具体的にどうやってLaravelを動かす環境を作るんですか?」
先生
「まずは必要なソフトをインストールして、魔法のコマンドをいくつか入力するだけです。一緒に手順を確認していきましょう!」
1. 開発環境構築の全体像を知ろう
これから皆さんが行うのは、自分のパソコンの中に仮想的なサーバーを作ることです。通常、PHPやLaravelを動かすには、データベースやWebサーバーなど、たくさんのソフトを個別にインストールしなければなりません。しかし、これらを一つずつ設定するのは非常に大変で、初心者の方が挫折する大きな原因になります。
そこで登場するのがDocker(ドッカー)です。Dockerは、アプリケーションを動かすために必要な道具一式を「コンテナ」という箱に詰め込んで管理する技術です。このコンテナを使うことで、誰でも同じ環境を瞬時に再現できるようになります。今回は、Laravel公式が提供している「Laravel Sail(セイル)」という仕組みを使って、最も簡単にDocker環境を構築する方法を解説します。
パソコンを初めて触る方でも、手順通りに進めれば必ずWebアプリケーションの土台が完成します。まずは、必要な道具を揃えるところから始めましょう。
2. 事前準備!必要なソフトのインストール
環境構築を始める前に、あなたのパソコンに基礎となるソフトウェアを導入する必要があります。以下の2つを準備してください。
- Docker Desktop:コンテナを動かすための本体です。公式サイトから自分のOS(WindowsまたはMac)に合ったものをダウンロードしてインストールしてください。
- WSL2(Windowsの場合のみ):Windowsの中でLinuxというOSを動かすための仕組みです。Docker Desktopをインストールする際に、合わせて設定が案内されることが多いです。
インストールが終わったら、Docker Desktopを起動しておきましょう。画面の端にクジラのアイコンが表示されていれば準備完了です。このクジラが、あなたのLaravelという船を運んでくれる役割を果たします。
3. ターミナルを開いてコマンドを入力しよう
ここからは「コマンド」を使って操作します。Windowsの方は「PowerShell」または「WSL」のターミナル、Macの方は「ターミナル」というアプリを開いてください。黒い画面や青い画面に文字を打ち込むのは緊張するかもしれませんが、一歩ずつ進めれば大丈夫です。
まずは、プロジェクトを作成したいフォルダ(デスクトップなど)に移動します。そして、以下のコマンドを入力して実行してください。このコマンドは、最新のLaravelをダウンロードして、Dockerの設定を自動で行ってくれる魔法の呪文です。
curl -s https://laravel.build/example-app | bash
上記の「example-app」の部分は、あなたが作りたいアプリの名前に変更できます。コマンドを実行すると、必要なファイルが順番にダウンロードされます。インターネットの速度によりますが、数分かかることもあるので、ゆっくり待ちましょう。画面に「Thank you! We hope you build something incredible.」と表示されたら成功です。
4. Dockerコンテナを起動する
フォルダの作成が終わったら、そのフォルダの中に移動して、いよいよDockerを起動させます。移動するためのコマンドと、起動するためのコマンドを順番に入力しましょう。
cd example-app
./vendor/bin/sail up -d
ここで使った./vendor/bin/sail up -dというコマンドについて解説します。Sail(セイル)は、Dockerを簡単に操作するための窓口です。upは「起動しろ」という命令で、-dは「バックグラウンド(裏側)で動かし続けて」という意味です。これにより、あなたのパソコンの中でWebサーバーやデータベースが動き始めます。
初回起動時は多くのデータを読み込むため時間がかかります。完了すると、複数の項目に対して「Started」や「Running」という文字が表示されます。
5. Webブラウザで動作確認をしよう
コンテナが無事に起動したら、実際にLaravelが動いているか確認してみましょう。普段インターネットを見る時に使っているブラウザ(Google ChromeやMicrosoft Edgeなど)を開いて、アドレスバーに以下の文字を入力してください。
http://localhost
localhost(ローカルホスト)とは、自分自身のパソコンを指す特別な名前です。画面に大きく「Laravel」と書かれたオシャレなページが表示されましたか?もし表示されていれば、おめでとうございます!あなたのパソコンの中に、世界で一つだけの開発環境が誕生しました。
もしエラーが出る場合は、Docker Desktopが正しく起動しているか、先ほどのコマンドでエラーが出ていなかったかを確認してみてください。
6. Laravelの設定ファイルを確認する
環境が構築できたら、中身がどうなっているか少しだけ覗いてみましょう。プロジェクトフォルダの中に.envというファイルがあります。これは環境設定ファイルと呼ばれ、データベースの接続情報などが書かれています。Laravel Sailを使う場合、最初からDockerに最適化された設定が書き込まれています。
例えば、データベースの名前やパスワードは以下のようになっています。
DB_CONNECTION=mysql
DB_HOST=mysql
DB_PORT=3306
DB_DATABASE=example_app
DB_USERNAME=sail
DB_PASSWORD=password
このように、あらかじめ必要な設定が自動で完了しているのがLaravel Sailの素晴らしいところです。初心者のうちは、このファイルを無理に書き換える必要はありません。今のままで十分に開発を始めることができます。
7. データベースのマイグレーションを実行する
Webアプリを作るには、データを保存する「テーブル」という箱をデータベースの中に作る必要があります。Laravelには、プログラムコードを元にテーブルを自動作成するマイグレーションという便利な機能があります。以下のコマンドを打ってみましょう。
./vendor/bin/sail artisan migrate
このコマンドを実行すると、以下のような結果が表示されます。
INFO Preparing database.
0001_01_01_000000_create_users_table ........................... DONE
0001_01_01_000001_create_cache_table ........................... DONE
0001_01_01_000002_create_jobs_table ............................ DONE
DONEと表示されれば、ユーザー情報を保存するためのテーブルなどが正しく作成されました。これで、ログイン機能や会員登録機能を作る準備が整いました。Docker環境ならではの複雑な設定なしに、コマンド一つでデータベースが操作できるのは非常に効率的です。
8. よく使うSailコマンドを覚えよう
開発を進める上で、よく使うコマンドをいくつか紹介します。これらをメモしておくと、日々の作業がスムーズになります。
-
./vendor/bin/sail up -d:環境を起動する。 -
./vendor/bin/sail stop:環境を一時停止する。 -
./vendor/bin/sail shell:コンテナの中に入って直接操作する。 -
./vendor/bin/sail artisan make:controller 名前:新しいコントローラー(処理の担当者)を作る。
最初は「毎回 ./vendor/bin/sail と打つのは面倒だな」と思うかもしれません。その場合は「エイリアス(別名)」という設定をすることで、単に sail と打つだけで済むようにもできますが、まずは基本の形に慣れていきましょう。
9. コンテナ環境を停止して片付ける方法
一日の作業が終わったら、動かしっぱなしにせず環境を停止させましょう。パソコンのメモリという資源を節約するためです。停止するには以下のコマンドを使います。
./vendor/bin/sail stop
もし、完全にデータを消去して最初からやり直したい場合は ./vendor/bin/sail down というコマンドもありますが、通常は stop で十分です。再度開発を始めるときは、また up コマンドを叩けば、前回保存したデータの状態から再開できます。このように、スイッチ一つで環境を出し入れできるのがDockerの最大のメリットです。
10. トラブルが起きた時のチェックポイント
もし、手順の途中でエラーが出て動かなくなってしまったら、以下のポイントを確認してください。プログラミングにおいてエラーは「間違い」ではなく「ヒント」です。落ち着いて対処しましょう。
- Docker Desktopは動いていますか?:クジラのアイコンが赤くなっていないか確認してください。
- ポートが重複していませんか?:他のソフト(Skypeや他のWebサーバーなど)が同じ窓口(ポート80番)を使っていると、Laravelが起動できません。
- インターネット接続は安定していますか?:最初の構築時は大量のファイルをダウンロードするため、安定した回線が必要です。
どうしても解決しないときは、一度作成したフォルダを削除して、手順3からやり直してみるのも一つの手です。Dockerなら何度でも「1からやり直す」ことが簡単なので、失敗を恐れずにチャレンジしてみてください。
まとめ
ここまで、LaravelとDocker、そしてLaravel Sailを活用した現代的な開発環境の構築方法について詳しく解説してきました。従来のPHP開発では、ローカル環境に直接サーバーソフトをインストールする作業が大きな壁となっていましたが、Dockerというコンテナ技術の登場により、その障壁は劇的に低くなりました。
今回の手順を振り返ると、まずはDocker Desktopを導入し、コマンド一つでLaravelの雛形を生成、そしてSailコマンドでコンテナを起動するという非常にシンプルな流れであったことが分かります。localhostにアクセスしてLaravelの初期画面が表示された瞬間の感動は、エンジニアとしての第一歩を踏み出した証です。
開発を加速させる重要ポイント
開発環境を構築した後に重要となるのが、フレームワークの仕組みを理解し、効率的に操作することです。特にLaravel Sailは、複雑なDockerコマンドを内部で隠蔽し、開発者がPHPやLaravelの操作に集中できるように設計されています。例えば、環境変数ファイルである.envの管理は、チーム開発においても極めて重要です。
また、データベース操作についても、Sailを通じることでホスト側のOSを汚さずにマイグレーションを実行できる点は大きな利点です。以下のコードは、環境構築後に頻繁に使用する「初期設定の自動化」や「ステータス確認」の例です。
// プロジェクトの依存関係をインストールし、環境を最新の状態に保つ
./vendor/bin/sail composer install
// データベースのテーブル状況を確認する
./vendor/bin/sail artisan db:show
// 現在動いているコンテナの一覧と状態を表示する
./vendor/bin/sail ps
次のステップへの展望
環境が整ったら、次は実際に「ルーティング」「コントローラー」「ビュー」というMVCモデルの基本を学んでいきましょう。Laravelは非常に拡張性が高く、認証機能やAPI開発、リアルタイム通信など、モダンなWebアプリケーションに必要な機能が網羅されています。
Dockerを利用した開発環境は、本番環境(AWSやAzure、Google Cloudなど)へのデプロイ時にもその威力を発揮します。「自分のパソコンでは動いたのに、本番サーバーでは動かない」といった、昔ながらの開発現場で頻発していたトラブルを防ぐことができるからです。
エラーに遭遇した際は、まずログを確認する癖をつけましょう。Laravelのログは、プロジェクト内のstorage/logs/laravel.logに記録されます。Sailを使っている場合は、以下のコマンドでリアルタイムにログを監視することも可能です。
./vendor/bin/sail logs -f
プログラミングの学習において、環境構築は最も挫折しやすいポイントですが、一度成功してしまえば、あとは創造的な開発を楽しむだけです。今回構築した環境をベースに、自分だけのオリジナルなWebサービスを作り上げていってください。DockerとLaravelの組み合わせは、あなたのエンジニアとしての可能性を大きく広げてくれるはずです。
生徒
「先生、無事にブラウザでLaravelの画面を確認できました!最初は黒い画面でコマンドを打つのが怖かったですけど、意外とスムーズにいきましたね。」
先生
「それは素晴らしいですね。一度成功体験を積めば、次からはもっと自信を持って操作できるようになりますよ。Dockerを使うことで、もし設定を間違えてもコンテナを壊して作り直せば良いだけですから、どんどん試行錯誤してください。」
生徒
「なるほど、やり直しが簡単だと思えば気が楽です。そういえば、データベースのマイグレーションもやってみましたが、これは具体的に何が行われているんですか?」
先生
「マイグレーションは、いわばデータベースの設計図をコードで管理する仕組みです。直接SQLを書かなくても、PHPのコードでテーブルを作ったり変更したりできるんですよ。試しに、マイグレーションの実行結果をもう一度確認してみましょうか。」
// artisan migrateコマンドの出力例
INFO Running migrations.
2014_10_12_000000_create_users_table ........................... 24ms DONE
2014_10_12_100000_create_password_reset_tokens_table ........... 31ms DONE
2019_08_19_000000_create_failed_jobs_table ..................... 22ms DONE
2019_12_14_000001_create_personal_access_tokens_table .......... 35ms DONE
生徒
「このように経過時間が表示されて、DONEと出れば成功なんですね。開発を終わる時は、パソコンの電源を切る前に停止コマンドを打てばいいんですよね?」
先生
「その通りです。./vendor/bin/sail stopを忘れずに。もしパソコンを再起動した後にまた開発を始めたいなら、またupコマンドを打てば、前の状態からすぐに再開できますよ。」
生徒
「分かりました!これで自分の作りたいアプリの開発に集中できそうです。まずは簡単な掲示板アプリから作ってみようと思います!」
先生
「良い目標ですね。Laravelには便利な機能がたくさん備わっていますから、公式ドキュメントも見ながら一歩ずつ進んでいきましょう。応援していますよ!」