Laradockを使ってLaravelのローカル環境をサクッと作成・サブモジュールとしてプロジェクトに追加する
PHPで人気なフレームワークといえば、Laravelがありますがローカル環境の構築で公式ではhomesteadが昔から使われています。
VirtualBox+Vagrantが私はあまり好きでなく(むしろ毛嫌いしている)、dockerを触ることが多くなっているので似た人のために簡単にLaravel環境を構築できるLaradockを是非とも紹介したいと思います。
ただしLaravel8からはLaravel Sailも公式で紹介されているのでお好みでご利用ください。
Laradockとは
公式サイト: https://laradock.io/
git: https://github.com/laradock/laradock
さまざまあるLaravelの機能をdocker上にて構築できるdocker設定ファイルです。
設定によってWebサーバーであればNGINX/Apache2、DBではMySQL/PostgreSQL/MariaDBなどお好みの環境を簡単に設定することができバージョンなどもある程度指定することができます。
Laradockインストール方法
下記の環境を別途ご準備して下さい。
まずは本体をcloneします。laravelプロジェクトの直下で下記を実行してあげます。
git clone https://github.com/Laradock/laradock.git
設定ファイルをコピーしてお好みの環境情報に変更します。
cp .env.example .env vi .env
docker環境を起動します。
下記の例はnginx(Webサーバー) + mysql(RDB) + redis(KVS) + workspace(PHPサーバー/laravel本体の置き場)
docker-compose up -d nginx mysql redis workspace
しばらくするとサーバーが起動されるため、laravelプロジェクトの.envファイルを今構築した環境に合わせて変更してあげます。
DB_HOST=mysql REDIS_HOST=redis
http://localhost
でブラウザアクセスできれば成功です。
Queueを使いたい、DBを変更したいなどあればdocker-composeの起動するサーバーを増やし、.envの変更すると簡単に構築できます。
Laradockをサブモジュールとして扱う
さて、このままではlaravelプロジェクトとlaradockのプロジェクト管理が煩雑になるのでlaravelプロジェクトのgitにサブモジュールとしてLaradockを入れてあげると管理しやすいです。
gitのサブモジュールは外部のリポジトリをプロジェクトに追加することができるため、外部リポジトリのソースコードは管理せずcommitIDにて管理され、かつプロジェクトとの紐付けも行うことができます。
Laravelプロジェクトにて下記コマンドにて追加してあげてください。
git submodule add https://github.com/Laradock/laradock.git
追加後Laradockフォルダができますが、環境構築時の手間を減らすためMakefileを追加してあげるといいかと思います。Laravelプロジェクト直下に「Makefile」を作成し、下記を記述してあげてください
up: cd laradock && docker-compose up --build -d nginx mysql redis workspace init: cp local/.env laradock remake: @make destroy @make init @make up stop: cd laradock && docker-compose stop down: cd laradock && docker-compose down destroy: cd laradock && docker-compose down --rmi all --volumes ps: cd laradock && docker-compose ps logs: cd laradock && docker-compose logs logs-watch: cd laradock && docker-compose logs --follow app: cd laradock && docker-compose exec wordpress bash
laradock/.env.exampleをlaravelプロジェクトのlocal/.envに移動してあげ、設定することでローカルサーバーを起動する場合、下記のコマンドのみで起動できるようになります。
make init