LoginSignup
28
28

More than 5 years have passed since last update.

Docker + PHP7 + opcacheで速いWordpressを体験

Last updated at Posted at 2015-09-15

Dockerイメージの準備

opcache付のPHP7イメージを作成

Docker公式のPHP7イメージは既にあります。
しかし、opcacheと呼ばれる高速化拡張が組み込まれていません。
そこで、公式のイメージにopcacheを追加したものを作成します。

ちょうど公式のPHPイメージには拡張を簡単に追加する方法が用意されているので使いましょう。

具体的には以下のようなDockerfileを用意するだけです!

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 を用意します。

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でも実験したかったのですが、ちょっと複雑そうなので今回は断念・・

28
28
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
28
28