Docker-ComposeでWordPress開発環境を構築しよう!php.iniも自動設定で作業効率UP!

記事
この記事は約6分で読めます。
※記事内には広告を含む場合がございます

本記事の目的

  • 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は月日が立つと情報が変化することも多いため、その点ご留意ください。
ぜひコメント頂けると幸いです。

コメント

タイトルとURLをコピーしました