Dockerイメージの準備
opcache付のPHP7イメージを作成
Docker公式のPHP7イメージは既にあります。
しかし、opcacheと呼ばれる高速化拡張が組み込まれていません。
そこで、公式のイメージにopcacheを追加したものを作成します。
ちょうど公式のPHPイメージには拡張を簡単に追加する方法が用意されているので使いましょう。
具体的には以下のようなDockerfile
を用意するだけです!
FROM php:7-apache
RUN docker-php-ext-install opcache
CMD ["apache2-foreground"]
このDockerfileを docker build
コマンドでイメージ化しましょう。
イメージの名前はとりあえず castaneai/php7-apache-opcache
としましたが、自由に設定できます。
$ docker build -t castaneai/php7-apache-opcache .
PHP7 + opcacheベースのWordpressイメージを作成
Docker公式のWordpressイメージもあるのですが、2015/09/15時点ではPHP5.6ベースになっています。
よってこの公式イメージの FROM php:5.6-apache
を
FROM castaneai/php7-apache-opcache
に置き換えましょう。
Wordpressの公式リポジトリをcloneして、該当箇所のみを書き換えます。
$ git clone https://github.com/docker-library/wordpress/
$ cd wordpress
$ vi apache/Dockerfile # 1行目の php:5.6-apache を castaneai/php7-apache-opcache に書き換え
$ docker build -t castaneai/wordpress-php7 ./apache # ビルドしてイメージ化
いざ実行
いよいよ生成した castaneai/wordpress-php7
イメージを実行します。
MySQLも必要なので複数のコンテナ連携が必須ですが、docker-composeを使うと簡単です。
以下のような docker-compose.yml
を用意します。
wordpress:
image: castaneai/wordpress-php7
ports:
- 8080:80
links:
- db:mysql
db:
image: mariadb
volumes_from:
- data
environment:
MYSQL_ROOT_PASSWORD: testpassword # 適宜変更する
data:
image: busybox
volumes:
- /opt
docker-compose.yml
が準備できれば、コマンド一つで実行できます。
$ docker-compose up -d
起動後、http://localhost:8080 にアクセスするとWordpressが表示されます。
筆者の環境では 20ms 程度でWordpressのトップページが表示できました。速い!(感動)
さらなる高速化へ・・?
今回Webサーバーは公式イメージに用意されているApacheを使用しましたが、ここをh2oなどのHTTP/2対応サーバーに変更するとさらなる加速を体験できるかもしれません!
できればh2oでも実験したかったのですが、ちょっと複雑そうなので今回は断念・・