みなさんはLaravelの開発環境を構築する際にどのような方法で環境構築を行なっていますか?
PHPで開発を行う際は、XAMPPを使ったりすることも多いのではないでしょうか?
または、Vagrantを使って開発環境の構築するというのもありますね。
ですが、実際の現場で使われているのはDockerを用いた環境構築だと考えています。
実際に、私はいくつかのLaravel開発案件に携わってきましたが、全てDockerを使った開発環境でした。
そこで今回は、PHP開発向けに構築されたDocker環境であるLaradockを使って環境構築を行う方法を紹介していきたいと思います。
Laradockとは
LaradockとはPHP開発向けに構築されたDocker環境であるため、Laradockを使うことでLaravelの開発環境が簡単に構築することができます。
そのため、Dockerに関する知識やインフラの知識が比較的少ない状態でも手軽に環境構築を行い、Webアプリケーションの開発に集中することができます。
個人でポートフォリオなどの開発を行う際にはうってつけの手段ではないでしょうか?
Laradockを使って、Laravel開発環境構築
それでは早速Laradockを使って、Laravelの開発環境を構築していきましょう。
なお、この記事で説明している内容はmacOSのIntel Core i5での動作確認を行なっております。Windowsでの動作確認は行なっておりませんので、ご了承ください。
事前準備
まずはプロジェクトのディレクトを作成し、Laradockのリポジトリをcloneしていきましょう。
mkdir sample-project
cd sample-project
git clone https://github.com/Laradock/laradock.git
cloneに成功すると、プロジェクトのディレクトリ直下にlaradockディレクトリが配置されます。
また、プロジェクトのディレクトリ直下にLaravelのプロジェクトを格納するためのディレクトリを作成しておきましょう。
mkdir src
Laradockの設定ファイルを編集
laradockディレクトリに移動し、.envファイルを作成しましょう。
.envファイルを作成する際は、雛形である.env.exampleファイルから複製します。
cd laradock
cp .env.example .env
APP_CODE_PATH_HOST
Laravelプロジェクトの格納場所を指定します。
ここでは前述で作成したsrcディレクトリを指定しましょう。
APP_CODE_PATH_HOST=../src/
DATA_PATH_HOST
プロジェクトのデータ管理場所を指定します。
デフォルトの状態だと、複数プロジェクトを作成した際に同じデータを参照することになるので、管理が複雑になってしまいます。
複数プロジェクト作成した際にも対応できるように、それぞれ個別でデータ管理を行うようにデータ管理場所を指定してあげましょう。
DATA_PATH_HOST=../.laradock/data
COMPOSER_PROJECT_NAME
プロジェクトのdockerコンテナ名を指定します。
分かりやすいようにプロジェクトのディレクトリ名と同じものを指定しています。
COMPOSER_PROJECT_NAME=sample-project
PHP_VERSION
PHPのバージョンを指定します。
PHP_VERSION=7.4
MYSQL_VERSION
MySQLのバージョンを指定します。
MYSQL_VERSION=5.7
MYSQL_DATABASE
MySQLで作成するデータベース名を指定します。
MYSQL_DATABASE=testdb
MYSQL_USER
MySQLのユーザーを指定します。
MYSQL_USER=testuser
MYSQL_PASSWORD
MySQLユーザーのパスワードを指定します。
MYSQL_PASSWORD=password
最終的に.envファイルは下記のように変更しています。
APP_CODE_PATH_HOST=../src/
DATA_PATH_HOST=../.laradock/data
COMPOSER_PROJECT_NAME=sample-project
PHP_VERSION=7.4
MYSQL_VERSION=5.7
MYSQL_DATABASE=testdb
MYSQL_USER=testuser
MYSQL_PASSWORD=password
Dockerコンテナの起動
docker-compose up
コマンドでコンテナを起動します。
また、-d
オプションを指定することで、バックグラウンドでコンテナを起動することができます。
初回はビルドから始まるため、少し時間がかかります。
docker-compose up -d nginx mysql phpmyadmin mailhog
起動が完了したら、下記コマンドで起動中のコンテナ名を確認しましょう。
docker ps --format "table {{.Names}}"
NAMES
sample-project_nginx_1
sample-project_php-fpm_1
sample-project_workspace_1
sample-project_phpmyadmin_1
sample-project_mysql_1
sample-project_mailhog_1
sample-project_docker-in-docker_1
下記7つのコンテナが起動していることが確認できます。
- nginx
- php-fpm
- workspace
- phpmyadmin
- mysql
- mailhog
- docker-in-docker
Laravelのインストール
workspaceコンテナにアクセスし、Laravelをインストールしていきます。
デフォルト状態ではrootユーザーでアクセスすることになるため、--user=laradock
オプションをつけてlaradockユーザーでアクセスしましょう。
laradockユーザーでLaravelのインストールを行わないとパーミッションエラーとなることがあるので、laradockユーザーでアクセスするようにしましょう。
docker-compose exec --user=laradock workspace bash
$ composer create-project --prefer-dist "laravel/laravel=7.*" ./
$ exit
「Application key set successfully.」と表示されれば、無事にLaravelプロジェクトのインストールが完了しています。
念の為ため、lsコマンドで中身を確認すると良いでしょう。
Laravelの設定ファイルを編集
Laravelの設定ファイルである.envファイルを編集していきましょう。
Laradockで設定した情報を反映していきます。
DB_HOST=mysql
DB_DATABASE=testdb
DB_USERNAME=testuser
DB_PASSWORD=password
以上でLaradockを使った環境構築が完了しました。
では、ブラウザで確認していきましょう。
ブラウザで確認
Laravel
http://localhostでLaravelの初期画面を確認することができます。
phpMyAdmin
phpMyAdminは8081番ポートに設定されているので、http://localhost:8081で確認することができます。
phpMyAdminのログイン画面が表示されるので、Laradockの.envファイルで設定した情報でアクセスすることができます。
- サーバ:mysql
- ユーザー名:MYSQL_USERの値
- パスワード:MYSQL_PASSWORDの値
MailHog
MailHogは8025番ポートに設定されているので、http://localhost:8025で確認することができます。
無事に環境構築できていることが確認できました。
開発終了時には下記コマンドでDockerコンテナを停止しておきましょう。
docker-compose stop
まとめ
Laradockを使ったLaravelの開発環境構築の方法を紹介してきました。
Dockerの知識が少ない方でも理解しながら環境構築ができたのではないでしょうか?
もちろん実務や本番環境を構築する際にはもっとDockerやインフラの知識が必要だと考えています。
しかし、冒頭にも述べたように個人開発などの際にサッとお手軽に開発環境を構築するにはとてもいい手段だと思います。
ぜひ、皆さんの開発環境構築の手助けになれば嬉しいです。