ローカル環境で、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.conf
で server_name
と root
を下記のように編集
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のデフォルトのサイトが表示されます。
以上です。