Laradockで複数のLaravelプロジェクトを動かす

ローカル環境で、Laradockを使い複数のLaravelプロジェクトを動作させたい場合の設定メモです。
追記: 2018年4月 Laradockの最新版(おそらくv7.0.0)で試したメモとして更新しました。

Laravelとは

PHPのフレームワークの一つです。
Laravel

詳しくは下記のサイトなど。
Laravelのここがすごい

Laradockとは

Laradockは、Laravelをdocker環境で利用できるようにしたツールです。

ドキュメントがあるのですが、ちょっと情報が古くなっていて設定項目名が違っていたり、知りたい情報が無かったりしてわかりづらいため、メモに残すことにしました。
この記事は、LaradockドキュメントのGetting Started
「B) Setup for Multiple Projects」
という項目に沿った内容になっています。

環境

  • Mac High Sierra 10.13.4
  • Laradock 最新版(2018年4月18日時点 v.7.0.0

行うこと

  • ローカル環境において、下記2つのURLでLaravelのサンプルアプリケーションをそれぞれ動作させる
http://project1.test
http://project2.test
  • 下記のフォルダ構成になる。複数のプロジェクトを1つのLaradockで動くようにする
+ laradock
+ project1
+ project2

Laradockをダウンロード

Laradockを git clone する

git clone https://github.com/laradock/laradock.git

laradockディレクトリに入る
設定ファイルをコピーして作成

cd laradock
cp env-example .env

設定ファイルを編集

vi .env

下記のようになっていることを確認。なっていなかったら下記のように変更

APP_CODE_PATH_HOST=../
...
APP_CODE_PATH_CONTAINER=/var/www:cached

docker-compose.ymlですべてのvoluemesの設定が下記のようになっていることを確認。
voluemesは、[ホストのファイルシステム:workspaceのファイルシステム]の書式でマウントするフォルダを指定できる。
${APPLICATION}.envで指定した値。つまりここでは、..//var/www:cachedにマウントするという設定。

- ${APP_CODE_PATH_HOST}:${APP_CODE_PATH_CONTAINER}

(:cachedの意味は…不明)
デフォルトでは上記の設定になっているはずなので、あくまで確認です。

Laravelプロジェクトを作成

コンテナを起動する

docker-compose up -d nginx mysql workspace

php-fpmのコンテナは書かなくても一緒に起動する
(以前はworkspaceも書かなくても起動したし、ドキュメント上もそのように見えるが、実際にはworkspaceは明示しないと起動しなかった)

workspaceコンテナに入る

docker-compose exec workspace bash

/var/www配下で2つのプロジェクトを作成

cd /var/www
composer create-project laravel/laravel --prefer-dist project1
composer create-project laravel/laravel --prefer-dist project2

ちょっと時間がかかるので待つ

ディレクトリが作成されたら、一旦コンテナから出る

exit

各プロジェクトごとにnginx設定ファイルを作成

laradockディレクトリ直下で作業を行う

まずデフォルトの設定ファイルを念のため無効にする。
(ファイル名を変更。拡張子がconfのものが全て読み込まれるため)

mv laradock/nginx/sites/default.conf default.conf.bk

各プロジェクトごとのnginx設定ファイルを作成する
ファイル名は*.confになっていれば何でもよい

cp nginx/sites/app.conf.example nginx/sites/app1.conf
cp nginx/sites/app.conf.example nginx/sites/app2.conf

app1.confserver_nameroot を下記のように編集

server_name project1.test;
root /var/www/project1/public;

同じく app2.conf でも下記のように編集

server_name project2.test;
root /var/www/project2/public;

コンテナを再起動して設定を反映させる

docker-compose stop
docker-compose up -d mysql nginx workspace

hostsファイルの編集

http://project1.testといったURLで見るために、hostの設定を追加する

hostsファイルを開く

vi /etc/hosts

下記を追記する

127.0.0.1 project1.test
127.0.0.1 project2.test
...

確認

ブラウザで下記のアドレスを確認する

http://project1.test
http://project1.test

Laravelのデフォルトのサイトが表示されます。
以上です。

参考サイト