どうも、こうすけ(@kosuke_upd)です。
今回は、Laradockで複数のLaravel開発環境を構築し、管理する方法を解説します。
以前、こちらの記事でLaradockでのLaravel開発環境の構築方法を解説しましたが、この方法で複数の開発環境を動かそうとすると、環境を変更するごとに設定ファイルを変更する必要が出てきます。
Docker (Laradock) を使って Laravel の開発環境を構築する方法
しかし、これから紹介する方法でLaravelの開発環境を構築することで、複数のLaravel環境を構築しても簡単に環境を切り替えることができる汎用性の高いものを構築できるのです。
新規でLaradockによる複数のLaravel開発環境を構築する方法と、すでにLaradockによる開発環境が存在する状態からLaradockによるLaravel開発環境を追加する方法とに分けて解説していくので、順番に見ていきましょう。
■ 実施環境
- macOS Mojave 10.14
- Docker for Mac 18.06.1
新規で Laradock による複数の Laravel 開発環境を構築する方法
最終的な着地点
まず、これから行う作業の着地点を明確にしておきます。
ローカル開発環境にて、下記の2つのURLにて2つの開発環境が動作するようにします。
http://project1.test
http://project2.test
また、ディレクトリ構成は下記のようにします。
./LaravelProject
├── laradock
├── project1
└── project2
手順1. Laradock を clone
まずは、Laradockをclone
します。
下記のコマンドを実行し、任意のプロジェクトディレクトリを作成し、作成したディレクトリに移動し、Laradockをclone
しましょう。
mkdir LaravelProject
cd LaravelProject
git clone https://github.com/Laradock/laradock.git
すると、作成した任意のプロジェクトディレクトリ配下に、laradock
ディレクトリが作成されます。
引き続き下記コマンドを実行し、作成されたlaradock
ディレクトリに移動し、env-example
ファイルをコピーし.env
という名前のファイル(環境設定ファイル)として作成しましょう。
cd laradock
cp env-example .env
手順2. コンテナを起動
現在のディレクトリはlaradock
です。
では、下記コマンドを実行してコンテナを起動しましょう。
※初回はコンテナの起動が完了するまでに時間がかかります。
docker-compose up -d nginx mysql phpmyadmin redis workspace
コンテナを起動したら、下記コマンドを実行してコンテナのステータスを確認してみましょう。
docker-compose ps
下記のようにコンテナのステータスが表示されると思います。
Name Command State Ports
---------------------------------------------------------------------------------------------------------------
laradock_docker-in-docker_1 dockerd-entrypoint.sh Up 2375/tcp
laradock_mysql_1 docker-entrypoint.sh mysqld Up 0.0.0.0:3306->3306/tcp, 33060/tcp
laradock_nginx_1 nginx Up 0.0.0.0:443->443/tcp, 0.0.0.0:80->80/tcp
laradock_php-fpm_1 docker-php-entrypoint php-fpm Up 9000/tcp
laradock_phpmyadmin_1 /run.sh supervisord -n Up 0.0.0.0:8080->80/tcp, 9000/tcp
laradock_redis_1 docker-entrypoint.sh redis ... Up 0.0.0.0:6379->6379/tcp
laradock_workspace_1 /sbin/my_init Up 0.0.0.0:2222->22/tcp
手順3. 「.env」ファイルに情報を追加
laradock
ディレクトリ配下にある.env
ファイルを開き、下記の情報を追加して保存しましょう。
DB_HOST=mysql
REDIS_HOST=redis
QUEUE_HOST=beanstalkd
MacのFinderから.env
ファイルを開きたい場合、デフォルトではファイル名が.
から始まるファイルはFinder上に表示されないため、「⌘(command) + ⇧(shift) + .(ドット)」で.
から始まるファイルを表示させてから開きましょう。
.
から始まるファイルを非表示に戻す場合は、再度「⌘(command) + ⇧(shift) + .(ドット)」で戻すことができます。
手順4. Laravel プロジェクトを作成
Larvel プロジェクトを作成するために、下記コマンドを実行してworkspace
コンテナにlaradock
ユーザーとして入りましょう。
docker-compose exec --user=laradock workspace bash
注意
composer
をroot
ユーザーで実行すると警告が表示されてしまうため、--user
オプションをlaradock
と指定してログインしています。
上記コマンドを実行すると、現在のディレクトリが/var/www
になっているはずです。
下記コマンドを実行し、2つのLaravelプロジェクトを作成しましょう。
※少々時間がかかります。
# composer create-project laravel/laravel project1
# composer create-project laravel/laravel project2
上記コマンドのproject1
、project2
はプロジェクト名なので、自由に変更して構いません。
Laravelプロジェクトの作成が完了したら、下記コマンドを実行してコンテナから出ましょう。
# exit
この時点で、laradock
ディレクトリと同じ階層に、今作成した2つのプロジェクトディレクトリが配置され、下記のようなディレクトリ構成になっています。
ディレクトリ構成
./LaravelProject
├── laradock
├── project1
└── project2
手順5. 各プロジェクトに専用の nginx 設定ファイルを作成して設定
まず、現在のディレクトリがlaradock
であることを確認しましょう。
問題なければ下記コマンドを実行し、デフォルトのnginx設定ファイルを無効にしましょう。
mv laradock/nginx/sites/default.conf default.conf.bk
デフォルトのnginx設定ファイルを無効にしたら、下記コマンドを実行してプロジェクトごとのnginx設定ファイルを作成しましょう。
cp nginx/sites/app.conf.example nginx/sites/app.project1.conf
cp nginx/sites/app.conf.example nginx/sites/app.project2.conf
作成するnginx設定ファイルの名前は、末尾が.conf
になっていれば何でも構いません。
プロジェクトごとのnginx設定ファイルを作成したら、それぞれのファイルを編集します。
まずは、app.project1.conf
ファイル内の、server_name
とroot
を下記のように変更して保存します。
# app.project1.conf
server_name project1.test;
root /var/www/project1/public;
app.project2.conf
ファイルも同様に、下記のように変更して保存しましょう。
# app.project2.conf
server_name project2.test;
root /var/www/project2/public;
それぞれ編集を完了したら、下記コマンドを実行し、コンテナを再起動して設定変更を反映させましょう。
docker-compose stop
docker-compose up -d nginx mysql phpmyadmin redis workspace
手順6. hosts ファイルの編集
http://project1.test
、http://project2.test
といったURLでアクセスできるようにするために、hosts
ファイルを編集しましょう。
Macの場合は、下記のディレクトリにhosts
ファイルがあります。
/private/etc/hosts
private
フォルダは隠しフォルダとなっているので、Finder上で「⌘(command) + ⇧(shift) + .(ドット)」を押すことで表示させられます。
hosts
ファイルには、下記を追加しましょう。
127.0.0.1 project1.test
127.0.0.1 project2.test
手順7. ブラウザで確認
では、ブラウザで下記URLを入力してLaravelのデフォルトページが表示されるか確認しましょう。
http://project1.test
http://project2.test
このように表示されればOKです。
念の為、各プロジェクトごとに見た目を変えて確認してみました。
http://project1.test
にアクセスした際はこのように表示されます。
http://project2.test
にアクセスした際はこのように表示されます。
問題ありませんね。
というわけで、新規でLaradockによる複数のLaravel開発環境を構築する方法は以上です。
引き続き、すでにLaradockによるLaravel開発環境が存在する状態から、新たにLaradockによるLaravel開発環境を追加する方法も見ていきましょう。
既存の Laravel 開発環境に新たに Laravel 開発環境を追加する方法
最終的な着地点
こちらでも最終的な着地点を確認しておきましょう。
せっかくなので、これまでの作成してきた2つのLaravel開発環境に新たなLaravel開発環境を追加し、下記の3つのURLにてそれぞれの開発環境が動作するようにします。
http://project1.test
http://project2.test
http://project3.test
また、ディレクトリ構成は下記のようにします。
./LaravelProject
├── laradock
├── project1
├── project2
└── project3
手順1. コンテナを起動
まずは下記コマンドを実行し、laradock
ディレクトリに移動し、コンテナを起動しましょう。
cd /LaravelProject/laradock
docker-compose up -d nginx mysql phpmyadmin redis workspace
手順2. Laravel プロジェクトを作成
Laravelプロジェクトを作成するために、下記コマンドを実行してworkspace
コンテナにlaradock
ユーザーとして入りましょう。
docker-compose exec --user=laradock workspace bash
現在のディレクトリが/var/www
になっているはずなので、下記コマンドを実行してLaravelプロジェクトを作成しましょう。
# composer create-project laravel/laravel project3
Laravelプロジェクトの作成が完了したら、下記コマンドを実行してコンテナから出ましょう。
# exit
この時点で、ディレクトリ構成は下記のようになっています。
./LaravelProject
├── laradock
├── project1
├── project2
└── project3
手順3. 作成したプロジェクト専用の nginx 設定ファイルを作成して設定
下記コマンドを実行して、専用のnginx設定ファイルを作成しましょう。
cp nginx/sites/app.conf.example nginx/sites/app.project3.conf
作成したapp.project3.conf
ファイル内の、server_name
とroot
を下記のように変更して保存しましょう。
# app.project3.conf
server_name project3.test;
root /var/www/project3/public;
編集が完了したら、下記コマンドを実行し、コンテナを再起動させ、設定変更を反映させましょう。
docker-compose stop
docker-compose up -d nginx mysql phpmyadmin redis workspace
手順4. hostsファイルの編集
http://project3.test
というURLでアクセスできるようにするために、hosts
ファイルを編集しましょう。
Macの場合は、下記ディレクトリにhosts
ファイルがあります。
/private/etc/hosts
private
フォルダは隠しフォルダとなっているので、Finder上で「⌘(command) + ⇧(shift) + .(ドット)」を押すことで表示させられます。
hosts
ファイルには、下記を追加しましょう。
127.0.0.1 project3.test
手順5. ブラウザで確認
では、ブラウザで下記URLを入力してLaravelのデフォルトページが表示されるか確認しましょう。
http://project3.test
このように表示されればOKです。
では、既存のLaravel開発環境に新たにLaravel開発環境を追加する方法の解説は以上です。
最後に
今回は、複数のLaravelプロジェクトを同時に動作させることのできる汎用性の高いLaravel開発環境をLaradockを用いて構築しました。
Laradockを用いてLaravel開発環境を構築するならこの方法がベストかなと思いますので、ぜひ参考にしながら構築してみてください。
\ 記事が良かったらシェア! /