LaravelとDockerを使って、簡単にPHPの環境を作れるLaradocを紹介

最近、PHPのフレームワークであるLaravelが流行ってきていますね!

過去5年の推移をGoogleTrendで調べてみましたが、Laravelが2017年辺りからPHPのフレームワーク界で伸びてきていることがわかります。

今回は、PHPのフレームワークである、LaravelをDockerを使って簡単に環境構築ができるLaradocというものを紹介していきます。

Laradocとは

PHPの環境をDockerで簡単に構築することができるパッケージツールです。

Laradoc公式サイト

設定を色々触ることで、自分がほしいミドルウェアを選択して、起動することができます。

例えば、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 For Mac公式サイト

※ 今は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

これで、プロジェクトを起動するための設定は終了です。

起動の確認

ここまでできたらあとは、起動の確認です。

http://localhost/

これにアクセスしてみてください。

これで自分のMacを汚すことなく、簡単にLaravel環境を構築することができました。

まとめ

Laradocを使うことで、自分のMacを汚すことなく、ほしい環境を選んで簡単に構築することができます。

今回は、PHP(Laravel)+Nginx+MySQLの簡単な構成をLaradocを用いて作成することできました。

是非自分の欲しい環境をカスタマイズして作成してみてください。

今回作成したツールはGithubに乗せておきますので、御覧ください。

Github

[参考] コマンドまとめ

docker-composeでlaravelのインストール

$ docker-compose exec workspace composer \
  create-project laravel/laravel src --prefer-dist