Hello, I am Kosuke.

Laradock で複数の Laravel 開発環境を構築し管理する方法

どうも、こうすけ(@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ファイルを開き、下記の情報を追加して保存しましょう。

.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
注意

composerrootユーザーで実行すると警告が表示されてしまうため、--userオプションをlaradockと指定してログインしています。

上記コマンドを実行すると、現在のディレクトリが/var/wwwになっているはずです。

下記コマンドを実行し、2つのLaravelプロジェクトを作成しましょう。
※少々時間がかかります。

# composer create-project laravel/laravel project1
# composer create-project laravel/laravel project2
補足

上記コマンドのproject1project2はプロジェクト名なので、自由に変更して構いません。

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_namerootを下記のように変更して保存します。

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.testhttp://project2.testといったURLでアクセスできるようにするために、hostsファイルを編集しましょう。

Macの場合は、下記のディレクトリにhostsファイルがあります。

/private/etc/hosts
補足

privateフォルダは隠しフォルダとなっているので、Finder上で「⌘(command) + ⇧(shift) + .(ドット)」を押すことで表示させられます。

hostsファイルには、下記を追加しましょう。

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_namerootを下記のように変更して保存しましょう。

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ファイルには、下記を追加しましょう。

hosts
127.0.0.1 project3.test

手順5. ブラウザで確認

では、ブラウザで下記URLを入力してLaravelのデフォルトページが表示されるか確認しましょう。

http://project3.test

http://project3.test

このように表示されればOKです。

では、既存のLaravel開発環境に新たにLaravel開発環境を追加する方法の解説は以上です。

最後に

今回は、複数のLaravelプロジェクトを同時に動作させることのできる汎用性の高いLaravel開発環境をLaradockを用いて構築しました。

Laradockを用いてLaravel開発環境を構築するならこの方法がベストかなと思いますので、ぜひ参考にしながら構築してみてください。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です