laravelの開発環境をDockerで構築する

以前の記事で、「Homesteadを使ってLaravel開発環境を作る」方法を紹介しました。

ただ、このブログもDockerを使って構築した経緯もあり、「Laravel開発環境もDockerで作れるのでは?」と思ってふと調べたら、ありました!!
laradockというLaravel用のDockerイメージがまとまっているプロジェクトがありましたので、今回はlaradockを使用して、改めて開発環境を構築したいと思います。

作業環境は以下の通り。
作業環境:
・OSはWindows10 Professional
・PHP + Composerインストール済み
Dockerインストール済み
Gitインストール済み
・コマンドラインインターフェースとしてGitBashを使用

※注意:DockerとVirtualBoxは共存できません!!
DockerとVirtualBoxは共存できません。Homestead環境は使用できなくなります。(VirtualBoxが起動しなくなるため)

今回は「すでに複数のLaravelプロジェクトが存在する」方法の手順を行います。

0.環境
自分の環境では、以下のディレクトリに複数のLaravelプロジェクトが配備されています。
C:\Projects\PHP\Lalavel\

1.準備
Laravelプロジェクトが存在するディレクトリに移動し、Gitコマンドでリポジトリをクローンします。

cd \C\Projects\PHP\Lalavel\
git submodule add https://github.com/Laradock/laradock.git

この段階でディレクトリ構成は以下の通りになります。

2.envファイルカスタマイズ
LaradockはLaravelで必要になるであろう、多くのアプリケーション(nginx, mysql, radiusなど)で構成されています。
この中から、必要となるアプリケーションを選定し、dockerで起動するようにします。

git cloneしたディレクトリの中に「env-example」というファイルがあるので、「.env」へ変更します。
Windowsの場合、先頭に「.」が付くファイル名に変更できないため、GItBashからmvコマンドで変更するのが良いかと思います。

mv env-example .env

.envの中身を編集します。自分が変更したのは以下の2点。
DATA_PATH_HOSTとCOMPOSE_PATH_SEPARATORを変更しています。

# Choose storage path on your machine. For all storage systems
# DATA_PATH_HOST=~/.laradock/data
DATA_PATH_HOST=./data

# Change the separator from : to ; on Windows
# COMPOSE_PATH_SEPARATOR=:
COMPOSE_PATH_SEPARATOR=;

3.nginxカスタマイズ
nginxの設定を変更し、複数のサイトが動作するよう変更します。
nginxの設定ファイルは以下の場所にまとめられています。

自分のディレクトリには、現在勉強中のプロジェクトが複数あるので、以下の2つのプロジェクトを起動できるように設定します。
・5-1_database
・6-1_eloquent

「app.conf.example」をコピーし、「5-1_database.conf」「6-1_eloquent.conf」の2つのファイルを作成します。

※laradockのnginxの設定ファイルは、ファイル拡張子が.confのものをすべて読み込むように設定されているため、ファイル名は何でもよく、拡張子にだけ注意します

作成したconfファイルをそれぞれ編集します。
編集する必要があるのは、「ServerName」「root」の二つの項目となります
・5-1_database.conf

server_name 5-1_database.test;
root /var/www/5-1_database/public;

・6-1_eloquent.conf

server_name 6-1_eloquent.test;
root /var/www/6-1_eloquent/public;

4.hostsファイルカスタマイズ
nginxのコンフィグファイルで設定したServerNameとホスト名の対応付けを行うため、hostsファイルを編集します。
hostsファイルは「C:\Windows\System32\drivers\etc」にあります

以下の2行をhostsファイルに追加しました

# Laravel Docker
127.0.0.1 5-1_database.test
127.0.0.1 6-1_eloquent.test

5.Dockerk起動と確認
いよいよDockerを起動します
GitBashで「C:/Projects/PHP/Lalavel/laradock」へ移動し、docker-composeで起動するコンテナを指定します。
今回はnginxとmysqlを起動させました。

cd \C\Projects\PHP\Lalavel\
docker-compose up -d mysql nginx

こんな感じでコンテナが起動するはずです。

6.アクセスしてみる
それではLaravelのサイトへアクセスしてみましょう。
それぞれのサイトが分かりやすいように、「welcome.blade.php」を編集しています。


無事にそれぞれのLaravelサイトへアクセスできました

終わりに
Laradockを使用して、複数のLaravel環境を動かす手順を紹介しました。
Homestead、Laradockともに、手軽に開発環境を作成できて素晴らしいですね
残念ながら、Homestead、Laradockは共存できないので、自分に適した環境を構築してください。
自分は今後はLaradockで学習を進めていこうと思います。