PHP
laravel
docker
LaraDock

Laradockを使ったLaravel開発環境構築

はじめに

今更ながらPHPフレームワークで人気のLaravelLaradockを用いて開発環境構築してみました。

Laradockとは

laradock-logo.jpg

「dockerでLaravelを動かすぜ!」ということに焦点を当てて開発が進められたプロジェクトですが、
今ではLaravelだけでなく、他のPHPプロジェクト(Symfony、CodeIgniter、WordPress、Drupal…)までもサポートしています。

Laradock is well known in the Laravel community, as the project started with single focus on running Laravel projects on Docker. Later and due to the large adoption from the PHP community, it started supporting other PHP projects like Symfony, CodeIgniter, WordPress, Drupal…
引用 Laradock公式HP:http://laradock.io/

前提

  1. Dockerがインストールされている事  
  2. gitがインストールされている事

※余談
これから記述する環境構築手順はMacでもWindowsでもほぼ同じです。
が、Windowsの場合dockerをHyper-V上で実行するためには、Windows Proでなければ実行できません
私はWindowsユーザーでWindows Homeでしたので、当然Docker for Windowsは動きませんでした・・・

流行りのDockerを勉強するための有意義な出費なので、迷わずWindows Proにアップグレードしました。
参考:俺のDocker - Windows10にインストール

環境構築手順

その1:Laradockのインストール

◆ディレクトリ準備
いまから開発環境を整える為のディレクトリを準備します。
今回は"App"という名前で作成します。

~ $ mkdir App

カレントディレクトリをAppに変更します。

~ $ cd App

◆Laradockのインストール & 各種準備
下記コマンドでlaradockをAppディレクトリ内にCloneします。

~App $ git clone https://github.com/LaraDock/laradock.git

終わったらlsコマンドでlaradockディレクトリが作成されている事を確認して、laradockディレクトリに移動します。

~App $ ls
laradock
~App $ cd laradock

◆.envファイルの作成 & 編集
.envファイルはlaradock内の「env-example」ファイルをコピーして作成します。

~App/laradock $ cp env-example .env

次に.envファイルに以下3行を追加します。

DB_HOST=mysql
REDIS_HOST=redis
QUEUE_HOST=beanstalkd

◆コンテナの起動
それではlaradock内で各種必要なコンテナ(Nginx、Redis、Beanstalkd)を起動させます。
ついにDockerを・・・

$ docker-compose up -d nginx mysql redis beanstalkd

しばらくして処理が終わったらコンテナが起動しているか、下記コマンドで確認しましょう。

$ docker-compose ps

すると下記のような画面が表示されるはずです(StateがUpになっていれば、コンテナが立ち上がっている状態となります)
キャプチャ.PNG

この状態でlocalhostでアクセスしても404 Not Foundが表示されるはずです。

その2:Laravelプロジェクトの作成

先ほど"docker-compose ps"コマンドでlaravel_workspace_1というコンテナが立ち上がっているのを確認しました。
そのコンテナにアクセスしLaravelプロジェクトを配置してみましょう。

◆コンテナへのアクセス & 準備

$ docker exec -it laradock_workspace_1 bash
root@84df08e29420:/var/www#

アクセスしたらまずはパッケージリストの更新をしましょう。

root@84df08e29420:/var/www# apt-get update

しばらくして完了したらファイル編集用にvimも入れておきましょう。

root@84df08e29420:/var/www# apt-get-install vim

◆Laravelプロジェクトの作成
それでは準備ができたのでLaravelプロジェクトを作成します。
今回はMyProjectというプロジェクト名で進めます。
下記コマンド実行後しばらく待機します。

root@84df08e29420:/var/www# composer create-project laravel/laravel MyProject

これでLaravelプロジェクトの作成は完了ですので、lsコマンドでディレクトリが作成されているか確認しましょう。

root@84df08e29420:/var/www# ls
laradock MyProject

ここまででLaravelプロジェクト作成は終了ですので、コンテナから出ます

root@84df08e29420:/var/www# exit

設定を変更するため、コンテナを一時停止させます。

$ docker-compose stop

◆ホスト側(MyProject)の編集内容をDockerコンテナ側に反映させる設定
"docker-compose.yml"を編集して、上記を実現します。
"docker-compose.yml"はlaradockディレクトリ直下に存在します。

vim docker-compose.yml

applicationsのvolumes部分を以下のように書き換えます
キャプチャ.PNG

その3:最後の仕上げ

◆パーミッション設定
「storage」「bootstrap/cache」ディレクトリについて、webサーバーから書き込みを許可するために、
パーミッションの設定を変更します。

まず再びコンテナへ入り、MyProjectディレクトリへ移動します。

docker exec -it laradock_workspace_1 bash
root@84df08e29420:/var/www# cd MyProject

パーミッションを変更します。
参考:Linuxの権限確認と変更(超初心者向け)
   パーミッションの読み方について毎回忘れてしまうので、とても参考になりましたm(_ _)m

root@84df08e29420:/var/www/MyProject# chmod 766 storage
root@84df08e29420:/var/www/MyProject# chmod 766 bootstrap/cache

◆Nginxのrootを変更
最後にNginxのドキュメントrootを変更します。
laradockディレクトリまで移動して、default.confを編集します。

root@84df08e29420:/var/www/laradock# vim nginx/sites/default.conf

編集するのは"default.conf"のroot部分です。
キャプチャ.PNG

編集が完了したら保存して、コンテナを再起動します。

docker-compose restart

お疲れ様でした!
これでlocalhost [http://localhost/] にアクセスしたらLaravelのトップ画面が表示されるはずです。
キャプチャ.PNG