本記事の目的
- WordPressのテスト、開発環境を簡単に構築する
- 手元のPCの環境を汚さない
- php.iniやテーマ開発などに向けた設定も行う
- 同じことを繰り返さない
対象読者
- Dockerの基礎的なことはわかる。
- WordPressの開発環境を作りたい
WordPressの開発環境をDockerで用意する理由
以下はDockerの利点とほぼ同義なので、知っている方は読み飛ばしてOKです。
再現性が高い
Dockerはコンテナという仮想環境で実行されるため、
環境による設定の違い、インストール方法の違いなどを無視できます。
環境を汚さない
ローカルのPCに色々インストールする場合、環境変数やフォルダなどの数多くの設定が必要です。
また環境(Windows、Linux等)特有の設定が必要になり、他のPCやOSに移動することが大変です。
なんどでもやり直せる。
仮想環境なので、いくらでも作り直せます。
作り直すたびに、ソフトのインストール等は、記述したファイルを元に自動で行われます。
完成物
Dockerfile
FROM wordpress:latest
COPY ./php.ini /usr/local/etc/php/php.ini
RUN apt update
docker-compose.yml
※以下は1例としてテーマ開発を行う際を想定しています。
wordpressのvolumes:部分のコメントは用途に合わせてコメント/コメントアウトしてください。
(必須ではありません)
version: '2'
services:
mysql:
image: mysql:5.7
ports:
- 3306:3306
environment:
MYSQL_ROOT_PASSWORD: password
MYSQL_DATABASE: wordpress
wordpress:
build:
context: .
dockerfile: Dockerfile
depends_on:
- mysql
image: custom_wordpress:latest
ports:
- 8000:80
volumes:
# - ./wordpress:/var/www/html
- ./themes/:/var/www/html/wp-content/themes/
environment:
WORDPRESS_DB_HOST: mysql:3306
WORDPRESS_DB_USER: root
WORDPRESS_DB_PASSWORD: password
php.ini
[Date]
date.timezone = "Asia/Tokyo"
[mbstring]
mbstring.internal_encoding = "UTF-8"
mbstring.language = "Japanese"
; エラーを画面に表示する (デバッグ用)
display_errors = On
; ログのレベル (デバッグ用)
error_reporting = E_ALL & ~E_NOTICE
; phpが使うメモリを制限します。
memory_limit = 256M
; 以下はWordpressの最大アップロードサイズ制限を変更する設定です。
; postできる最大サイズ
post_max_size = 500M
; uploadできる最大サイズ
upload_max_filesize = 500M
解説
Dockerfileの詳細解説
FROM wordpress:latest
COPY ./php.ini /usr/local/etc/php/php.ini
RUN apt update
まずは、同ディレクトリにphp.iniを準備してください。
これはWordpressに限った設定ファイルではなく、PHP言語自体の設定ファイルです。
本来はDockerfileでビルドしなくても、Wordpressの開発環境を用意することは可能です。
しかし、本番サイトを開発環境にクローンする場合、最大アップロードサイズの制限
でエラーが出て、うまくいかないことが多いです。
その際は以下の手順のように作業する必要があり、面倒です。
docker execでコンテナに入る→ディレクトリ移動→nanoかviをインストール→php.iniを記述する
上記の面倒な手順を省略するために
イメージをビルドする必要はありますが、Dockerfileでイメージに対し操作を行っています。
docker-compose.ymlの詳細解説
wordpress:
build:
context: .
dockerfile: Dockerfile
depends_on:
- mysql
image: custom_wordpress:latest
build:部分では先程解説したDockerfileを元に、イメージをup時に自動でビルドしてくれます。
volumes:
# - ./wordpress:/var/www/html
- ./themes/:/var/www/html/wp-content/themes/
コメント部分を解除するとwordpressの全体が、ローカルのフォルダと同期されます。
ですが、すべてのファイルを同期するため、動作が遅くなる場合があります。
自分が必要なフォルダだけ同期することで、軽快に動作します。
- ./themes/:/var/www/html/wp-content/themes/
ここではテーマを開発、編集するサンプルとして、themesがあるフォルダを狙い撃ちしています。
開発環境の動作の重さは開発速度にも直結します。気をつけましょう!
ポートがすでに使用されていて変更する必要がある場合のサンプル
docker-compose.yml ポート変更例
version: '2'
services:
mysql:
image: mysql:5.7
ports:
- 任意のポート:3306
-- 略 --
wordpress:
-- 略 --
ports:
- 任意のWordpressポート:80
environment:
WORDPRESS_DB_HOST: mysql:任意のポート
WORDPRESS_DB_USER: root
WORDPRESS_DB_PASSWORD: password
php.iniの詳細解説
各自で手を加えてください。
この記事では開発環境での使用を想定しています。
-- 略 --
; 以下はWordpressの最大アップロードサイズ制限を変更する設定です。
; postできる最大サイズ
post_max_size = 500M
; uploadできる最大サイズ
upload_max_filesize = 500M
WordPressでありがちなエラー、最大アップロードサイズを設定する項目です。
本番サイトをコピーして開発環境を作る場合、サイズを大きめに設定しておくと楽です。
まとめ
Dockerを使うと、Wordpressの開発環境はかなり簡単に作ることができます。
ただ、Dockerに慣れていないと少し難し目ではあるかもしれませんね、
私自身とても苦労した経験があるため、ここに自分自身の勉強もかねてまとめました。
Dockerは月日が立つと情報が変化することも多いため、その点ご留意ください。
ぜひコメント頂けると幸いです。
コメント