Home > Docker | PHP > Docker Hub 公式 PHP イメージで、複数バージョンの PHP コンテナを起動する

Docker Hub 公式 PHP イメージで、複数バージョンの PHP コンテナを起動する

この記事の所要時間: 422

Docker Hub の 公式 PHP イメージで、PHP 5.4, 5.5, 5.6 のコンテナを起動します。

docker

PHP Advent Calendar 2014 の 12 日目です。昨日は、PHPで簡単に華麗にDIとAOPをキメる でした。

Docker Hub には、公式でミドルウェアや言語のイメージがで公開されています。PHP もその一つで、現在は、5.4, 5.5, 5.6 が公開されています。また、バージョン毎に複数のタグが存在し、cli / fpm / apache(mod_php) といた構成違いのものが存在します。

https://registry.hub.docker.com/_/php/

ここでは、5.x-apache タグのイメージを使って、複数バージョンのコンテナを起動して、ブラウザから、同一コンテンツを異なる PHP バージョンで確認できるようにします。

boot2docker のインストールと起動

Docker の実行環境として、boot2docker を使いました。

pkg ファイルが公開されているので、これをダウンロードして、インストールすると良いです。

http://docs.docker.com/installation/mac/

インストールできたら、boot2docker を起動しておきます。

$ boot2docker init
$ boot2docker up

boot2docker の VM が起動したら、IP アドレスを確認しておきます。

$ boot2docker ip

The VM's Host only interface IP address is: 192.168.59.xxx

公式 PHP イメージでコンテナを起動

Docker Hub 公式の PHP イメージを使って、5.4, 5.5, 5.6 の Docker コンテナを起動します。5.4-apache / 5.5-apache / 5.6-apache のイメージは、Apache + mod_php の構成になっており、手軽に Web アプリケーションを実行できます。

実行するコンテンツは、OSX 上にあるファイルを利用します。boot2docker では、1.3 から shared_folder で、OSX の /Users のディレクトリを、VM から /Users として参照することができます。これにより、VM の docker コンテナからシームレスに OSX のディレクトリをマウントすることができます。

コンテンツは、単純に PHP バージョンを出力するだけです。

$ cat /Users/path/to/index.php
<?php
echo 'PHP ' . phpversion();

バージョン毎にポートを分けて、以下のようにコンテナを実行します。初回は、各イメージをダウンロードするので時間がかかります。次回以降は、即座に起動します。

$ docker run -v /Users/path/to:/var/www/html -p 8084:80 -d php:5.4-apache
$ docker run -v /Users/path/to:/var/www/html -p 8085:80 -d php:5.5-apache
$ docker run -v /Users/path/to:/var/www/html -p 8086:80 -d php:5.6-apache

ブラウザから確認

では、ブラウザから起動した Docker コンテナにアクセスします。ポートを変えて、アクセスすると、それぞれの PHP バージョンが出力されます。

  • http://boot2docker-vm:8054/
PHP 5.4.35
  • http://boot2docker-vm:8055/
PHP 5.5.19
  • http://boot2docker-vm:8056/
PHP 5.6.3

さいごに

Docker Hub 公式の PHP イメージを使って、複数バージョンの PHP を起動しました。

このイメージは、使ってみると分かるのですが、拡張は必要最低限となっており(mbstring も pdo_mysql / pdo_pgsql もありません)、実際のアプリケーションを動かすには、拡張を追加して、ビルドする必要があります。

もちろん、こうした状況は考慮されており、イメージには docker-php-ext-install という拡張を追加するコマンドが用意されています。

実用する場合は、公式イメージをそのまま使うのではなく、これをベースに Dockerfile を書き、独自に拡張を追加したイメージを使うという方法になりますね。

明日の PHP Advent Calendar 2014は、ngyuki さんです。お楽しみに!

Pocket

follow us in feedly

Home > Docker | PHP > Docker Hub 公式 PHP イメージで、複数バージョンの PHP コンテナを起動する

検索
フィード
メタ情報

Return to page top