最近、PHPのフレームワークであるLaravelが流行ってきていますね!
過去5年の推移をGoogleTrendで調べてみましたが、Laravelが2017年辺りからPHPのフレームワーク界で伸びてきていることがわかります。
今回は、PHPのフレームワークである、LaravelをDockerを使って簡単に環境構築ができるLaradocというものを紹介していきます。
Laradocとは
PHPの環境をDockerで簡単に構築することができるパッケージツールです。
設定を色々触ることで、自分がほしいミドルウェアを選択して、起動することができます。
例えば、PHP7+MariaDB+Nginx+Redisみたいな環境が欲しい時には、.envファイルを触って、Dockerコマンド(正確にはdocker-composeコマンド)を打つことで、上記のコンテナ群が自動で生成&管理されて、実現したい環境の構築がすぐにできるようになります。
途中でMariaDBをMySQL5.7に変更したいなって思ったときも、.envファイルを変更することで、新たにコンテナが作成され、欲しい環境が手に入ります。
(Laradocもこの設定群をまとめたのはすごいですが、それ以前にDockerって便利ですね)
自分のホストコンピュータを汚すことなく、欲しい環境が手に入るのはとても魅力的ですよね!
環境構築してみる
では、実際にLaradocを用いて、Laravel(PHP)をDockerで構築していきます。
今回は、下記のような構成で構築していきます。
- PHP7.2
- MySQL5.7.23
- Nginx
Dockerのインストール
今回はMacユーザを対象として説明をしていきます。
Windowsユーザの人もほぼほぼ一緒なので、インストールするDockerのバージョンを確認してインストールしてください。
※ 今はDocker公式サイトに新しくサインアップしないとダウンロードができないみたいです
ダウンロードしたら下記のようなDockerのロゴを確認できると思います。
Laradocのセットアップ
今回はこういった構成にしていきたいと思います。
. ├── README.md ├── env-sample-laradoc ├── env-sample-src ├── laradock(submodule化) │ └── Laradockの中身 └── src └── Laravelのソース一覧
Laradocをsubmoduleとして、srcと分けていきます。
こうすることで、Laradockの中にあるDocker設定群とsrcを分けることができ、src以下の作業(コーディング)に集中することができます。
まずは、自分のプロジェクトディレクトを作成していきます。
$ mkdir sample-app
次に、プロジェクト内でlaradocをsubmodule化し、自分用のディレクトを作成していきます。
$ git init $ git submodule add https://github.com/LaraDock/laradock.git $ cd laradock $ cp env-example .env
各種設定の説明
.env以下を下記のように指定して変更していきます。
# アプリケーションのディレクトを指定 APP_CODE_PATH_HOST=../src # PHPのバージョンを指定 PHP_VERSION=7.2 # MySQLのバージョン MYSQL_VERSION=5.7.23 # DATABASEの名前 MYSQL_DATABASE=sample # DATABASEのユーザ MYSQL_USER=sample
こちらを変更することで、Dockerコンテナを作成するときに、バージョンを指定できたり、中身の設定を変更することができます。
ファイルが修正できたら、今回作成した.envをルートディレクトリに保存しておきましょう。
$ cp ./laradock/.env ./env-sample-laradoc
これでLaradockの設定は以上となります。
実際に起動してみる
先程作成したLaradockをもとに、プロジェクトを起動していきましょう。
Dockerコマンド
docker-composeコマンドを用いて、コンテナを起動していきます。
# dockerのファイル群があるlaradockに移動 $ cd laradock # docker-composeコマンドでworkspaceを起動 $ docker-compose up -d workspace -- 結構時間かかります --
これでworkspaceの起動が完了し、コンテナ内でLaravelプロジェクトを作成する準備ができました。
Laravelのインストール
先程、workspaceコンテナを作成できたので、Laravelをコンテナ内で作成していきます。
laradockあるdocker-compose.ymlで、workspaceコンテナ内とホストマシンでボリュームが共有されているので、インストールさえしてしまえばあとはホストマシン上でコーディングが可能です。
# workspace内でLaravelをインストールするコマンドを実行 $ docker-compose exec workspace composer \ create-project laravel/laravel src --prefer-dist # 一度コンテナをストップしておきます $ docker-compose stop # nginxとmysqlコンテナを起動しておきましょう $ docker-compose up -d --build nginx mysql
src内(laravelプロジェクト)の.envを編集していきます。
DB_HOST=mysql DB_DATABASE=sample DB_USERNAME=sample
ファイルが修正できたら、今回作成した.envをルートディレクトリに保存しておきましょう。
$ cp ./laradock/.env ./env-sample-src
これで、プロジェクトを起動するための設定は終了です。
起動の確認
ここまでできたらあとは、起動の確認です。
これにアクセスしてみてください。
これで自分のMacを汚すことなく、簡単にLaravel環境を構築することができました。
まとめ
Laradocを使うことで、自分のMacを汚すことなく、ほしい環境を選んで簡単に構築することができます。
今回は、PHP(Laravel)+Nginx+MySQLの簡単な構成をLaradocを用いて作成することできました。
是非自分の欲しい環境をカスタマイズして作成してみてください。
今回作成したツールはGithubに乗せておきますので、御覧ください。
[参考] コマンドまとめ
docker-composeでlaravelのインストール
$ docker-compose exec workspace composer \ create-project laravel/laravel src --prefer-dist