今回Docker for Macを使って比較的簡単にLarabel環境を構築できましたので紹介します。
DockerはVagrantに比べて環境構築がサクッと早く構築できるのでとてもおすすめです。

さらに今回使っているlaradocというライブラリを使えばphpのバージョン指定やnginx、php-fpm、データベース(MySQLやPostgresql、Redisなど)の設定もDockerでかんたんに構築できますのでかなり効率的だと思います。

環境

今回は下記の環境で構築しています。

  • Mac OS 10.12

Docker for Macのインストール

まずDocker for MacをインストールしてMacでDockerが使えるようにします。
Docker for Macは非Linux環境でサクッとLinux環境を構築するのに適したコンテナを作成できるツールです。

https://docs.docker.com/docker-for-mac/

Get Docker for Mac [stable]ボタンをクリックしてDocker.dmgをダウンロードします。

Docker.dmgをダブルクリックします。

DockerのアプリフォルダをApplicationsフォルダに移動します。これでDocker for Macのインストールは完了です。

ApplicationsフォルダからDockerをダブルクリックして起動してください。

初回起動時は下記の画面が表示されます。Nextをクリックします。

Docker for Macの起動には管理者権限が必要という事です。OKボタンをクリックして管理者のパスワードを入力します。

パスワード入力してOKをクリックするとステータスバーにDockerのアイコンが追加され下図のポップアップが表示されます。
Got it!ボタンを押して閉じましょう。

ちなみにステータスバーのDockerのアイコンをクリックすると各種設定を行えます。
Dockerの起動状態や、停止など行えます。

これでDockerを使うための下記のツールがインストールされた状態です。

名前 説明
docker Dockerの実行環境そのもの
docker-compose 複数のコンテナを利用して一つのサービスを提供する場合に YAML 一発で構築出来るようにするツール
docker-machine dockerをバーチャルホストや Mac、Windows でも使えるようにしてくれるもの

ターミナルを開いて実際にインストールされたか確認してみましょう。

ターミナルで実行

docker --version
docker-compose --version
docker-machine --version

下図のようにバージョン情報が確認できれば正常にインストールできています。

Laradocの導入

Dockerを使ってLaravel環境を構築するならLaradockがとても便利です。Laravel環境を構築するための下記の環境がdocker-composeを使ってコマンド一発で構築できます。

  • Nginx
  • PHP(7.0, 5.6, 5.5に切り替え可能)
  • Memcached、HHVM、Beanstalkd、PHP-FPM
  • composer
  • MySQL(Postgres, MariaDBに変更可能)
  • Redis
  • Laravel

それでは任意のLaravelのワークフォルダを作成してそこにターミナルで移動し、Laradocのソース一式をGithubでダウンロードします。

mkdir laravelwork
cd laravelwork
git clone https://github.com/LaraDock/laradock.git
cd laradock

Laradocワークスペースの起動

まずはワークスペース(workspace)のコンテナを起動します。このworkspaceはcomposerやnodeのツールを用意しているコンテナになります。workspaceを起動してLaravelプロジェクトを作成しておきます。

ターミナルで実行

docker-compose up -d workspace

初回は時間がかかりますが気長に待ちましょう。
下図のように表示されれば作成完了です。

コンテナが起動したらdocker-compose psコマンドで起動したworkspaceのコンテナ名を取得します。

ターミナルで実行

$ docker-compose ps
WARNING: The INSTALL_PRESTISSIMO variable is not set. Defaulting to a blank string.
Name               Command      State    Ports
-------------------------------------------------------
laradock_application_1   true            Exit 0
laradock_workspace_1     /sbin/my_init   Up

workspaceのコンテナ名がlaradock_workspace_1である事がわかったので、そのコンテナ名を指定してbashでログインします。

ターミナルで実行

docker exec -it laradock_workspace_1 /bin/bash

workspaceのコンテナは/var/www/laravel内のファイルが共有フォルダになっています。なので、そこに移動してcomposerでLaravelプロジェクトを作成します。

ターミナルで実行

cd /var/www/laravel
composer create-project laravel/laravel laraveltest --prefer-dist

Laravelプロジェクトは作成に多少時間がかかりますので気長に待ちましょう。
作成が完了したらexitでコンテナからログアウトしましょう。
また、プロジェクトが作成したらworkspaceは停止していいので停止しておきましょう。

ターミナルで実行

exit # workspaceからログアウト
docker-compose stop # workspaceコンテナ停止

次に作成したLaravelプロジェクトをワークスペースのルートに変更しておきます。
これでLarabelプロジェクトフォルダがドキュメントルートになり動作確認できるようになります。

docker-composer.yml

### Laravel Application Code Container ######################
volumes_source:
image: tianon/true
volumes:
//////////////// ▼▼ 修正 ▼▼ ////////////////
- ../laraveltest:/var/www/laravel
//////////////// ▲▲ 修正 ▲▲ ////////////////

また、nginxのポートもデフォルトで80になっているので、バッティングしないように任意にポートを変更しておきましょう。

docker-composer.yml

### Nginx Server Container ##################################
nginx:
build:
context: ./nginx
args:
- PHP_UPSTREAM=php-fpm
volumes_from:
- volumes_source
volumes:
- ./logs/nginx/:/var/log/nginx
ports:
//////////////// ▼▼ 修正 ▼▼ ////////////////
- "8080:80" # 8080ポートでアクセスするよう変更
//////////////// ▲▲ 修正 ▲▲ ////////////////
- "443:443"
links:
- php-fpm

次にWebサーバであるNginxとphp-fpm、Mysqlのコンテナを起動しましょう。

ターミナルで実行

docker-compose up -d php-fpm nginx mysql

初回のコンテナ起動はコンテナイメージをダウンロードしてくるので少々時間がかかります。
しかし、一度コンテナイメージをダウンロードしたら起動がとても早いです。
Vagrantとは比べ物にならないと思います。

これでLarabelがブラウザで起動していると思います。下記URLで確認してみましょう。

http://localhost:8080

下図のようにLarabelのスタートページが表示されればOKです。

このようにDockerを使うと使い捨ての環境が素早く構築できますのでおすすめです。

Larabelのセミナー開催しています。ご興味あるかたはお気軽に参加ください。