Laradockで2つのアプリケーション開発ができる環境を構築した


ローカルで複数サイトの開発環境を動かしたいということはよくあると思います。

今回はLaradockを使って2つLaravelアプリケーションの動作環境をつくります。
こんな感じでアクセスできればOK

http://project1.com
http://project2.com

フォルダ構成は以下のように複数プロジェクトがLaradockを参照する構成にする

laradock
   L project1
   L project2

Laravelプロジェクト作成

コンテナ起動し、worksoaceに入る

docker-compose up -d nginx mysql workspace
docker-compose exec workspace bash

2つのプロジェクトを作成

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

nginxの設定更新

デフォルトの設定ファイルを念のため無効にし、
各プロジェクトごとのnginx設定ファイルを作成する

mv laradock/nginx/sites/default.conf default.conf.bk
cp nginx/sites/app.conf.example nginx/sites/project1.conf
cp nginx/sites/app.conf.example nginx/sites/project2.conf

# project1.confの変更
server_name project1.com;
root /var/www/project1/public;

# project2.confの変更 
server_name project2.com;
root /var/www/project2/public;

設定ファイル

docker-compose.ymlのvolumesでコンテナのディレクトリとローカルディレクトリの紐付けが行われる。

cd laradock
vi docker-compose.yml

      volumes:
        - ${APP_CODE_PATH_HOST}:${APP_CODE_PATH_CONTAINER}

vi .env
APP_CODE_PATH_HOST=../ # ローカル
APP_CODE_PATH_CONTAINER=/var/www:cached # コンテナ

設定反映

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

/etc/hostsを修正

127.0.0.1       project1.com
127.0.0.1       project2.com

ブラウザで確認

http://project1.com
http://project2.com

どちらもLaravelのデフォルトのサイトが表示されればOK