PHP開発環境をDockerで構築する「phpstack」レビュー

最近は開発環境を仮想化するケースが増えてきました。元々WindowsではPHPの開発時にVMWare Playerを使ってLinuxを動かして開発することが多かったですが、それがMac OSXやLinuxであっても有益に使われています。一つのプロジェクトであれば環境をローカルに作ってしまっても良いのですが、プロジェクトごとに異なる環境を用意したり、LAMPだけに限らないアーキテクチャの場合に開発に携わる人員分、環境を作るのは大変です。

そこで今回はphpstackを紹介します。CoreOS上にDockerを使って様々なサービスをインストールして様々なプロジェクトに対応できるPHP開発環境を構築してくれます。リモートにログインせずとも使えるという利点があります。

必要なもの

オプションとして、

があると便利です。今回はMac OSX + Vagrant/VirtualBoxで構築しています。Windowsの場合はFigが公式サポートされていませんが、Figが動くなら同じように構築できるはずです。

仮想環境立ち上げ

まずphpstackをクローンします。

$ git clone https://github.com/kasperisager/phpstack.git

次にVagrantを立ち上げます。

$ cd phpstack
$ vagrant up

しばらくかかりますが、終わったらDocker Composeを実行します。まずはインストールをします。

$ curl -L https://github.com/docker/compose/releases/download/1.3.1/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose
$ chmod +x /usr/local/bin/docker-compose

次にDOCKER_HOSTを仮想環境内のサーバに向けて設定する必要があります。

$ export DOCKER_HOST=192.168.33.10:2375
$ docker-compose up

これで仮想環境内にPHP開発に必要なソフトウェアが一気にインストールされていきます。

インストールされるサービスは次の通りです。

  • Nginx
  • MySQL
  • MongoDB
  • PHP-FPM
  • HHVM
  • Memcached
  • Redis
  • Elasticsearch

これだけあれば大抵のプロジェクトでは事足りると思います。

さらにShipyardというDocker管理システムがインストールされますので、さらに追加でサービスをインストールすることもできます。Shipyardは http://192.168.33.10:8080/ にアクセスします。

Shipyardの管理画面
Shipyardの管理画面

Webサーバにアクセスする場合は、 http://192.168.33.10/ にアクセスします。これはphpstackの www/default ディレクトになります。

Webサーバにアクセスしたところ
Webサーバにアクセスしたところ
$ cat www/default/index.php
<?php phpinfo();

インストールされるPHPはバージョン5.5.9になります。

パスワード設定されているサービスについては docker-compose.yml を見ると設定が分かるようになっています。

$ cat docker-compose.yml
  :
mysql:
  image: tutum/mysql
  ports:
    - "3306:3306"
  environment:
    MYSQL_PASS: password
  :

phpstackを使えば必要なサービスが揃った状態で開発が開始できます。さらにメンバーの環境も統一できますので、生産性が向上するのではないでしょうか。

kasperisager/phpstack