わりと最近になってから Docker の存在を知り、ローカルの開発環境構築に欠かせない存在となりました。ここでは Docker インストール済みの環境に、実際に WordPress 環境を構築する方法について書いていきます。
Docker そのものについての詳しい解説は省略しています。こちらのサイトなどが分かりやすいと思います。
この記事で使用する設定ファイルは、こちらで公開しています。テンプレートとしてご利用いただけます。
基本の手順
下記の手順で、新規の WordPress サイトを立ち上げることができます。
- Docker をダウンロードし、インストールします
- プロジェクト用のディレクトリを作成します。ここでは
dockerwpという名前で想定します dockerwpディレクトリの直下に、下記の内容でdocker-compose.ymlというファイルを作成します
services:
wordpress:
image: wordpress
container_name: dockerwp_wp
ports:
- 80:80
environment:
WORDPRESS_DB_HOST: dockerwp_db
WORDPRESS_DB_USER: admin
WORDPRESS_DB_PASSWORD: wordpress
WORDPRESS_DB_NAME: dockerwp_dev
volumes:
- ./wp:/var/www/html
depends_on:
- db
links:
- db
db:
image: mysql:5.7
container_name: dockerwp_db
environment:
MYSQL_DATABASE: dockerwp_dev
MYSQL_USER: admin
MYSQL_PASSWORD: wordpress
MYSQL_RANDOM_ROOT_PASSWORD: '1'
volumes:
- ./db:/var/lib/mysql
phpmyadmin:
image: phpmyadmin/phpmyadmin
container_name: dockerwp_phpmyadmin
depends_on:
- db
ports:
- 992:80
environment:
PMA_HOST: dockerwp_db
UPLOAD_LIMIT: 64M
- Docker を起動します
dockerwpディレクトリで、コマンドdocker-compose up -dを実行します(-dを省くと処理中のアウトプットが見れます)- しばらく待つと、 http://localhostから WordPress サイトの新規インストール画面が確認できます
サイトを停止するときは docker-compose down を実行します。
上記の手順を実施したあとに dockerwp の中を確認すると、 wp ディレクトリに WordPress の構成ファイルが、 db ディレクトリに MySQL の構成ファイルが入っているのが分かります。サイトに必要な情報がすべて dockerwp ディレクトリの中に揃っている状態なので、他の環境でも Docker がインストールされていれば、ディレクトリごと共有することで同じようにサイトを確認することができます。
アレンジ
データベース情報を変更する
必要に応じて、docker-compose.yml のデータベース情報を編集してください。
WORDPRESS_DB_USER... MySQL ユーザ名(MYSQL_USERと同じ値)WORDPRESS_DB_PASSWORD... MySQLパスワード(MYSQL_PASSWORDと同じ値)WORDPRESS_DB_NAME... データベース名(MYSQL_DATABASEと同じ値)
WORDPRESS_DB_HOST には、 MySQL の container_name を指定します。
アップロード容量上限を変更する
メディアファイルなどのアップロードサイズ上限は、通常であれば .htaccess や php.ini の編集で変更できるのですが、 Docker 環境ではうまくいかないようなので、次の手順で対応します。
dockerwpディレクトリ内に下記の内容でuploads.iniを作成します。64Mの部分は任意の容量に変えてください
file_uploads = On
memory_limit = 64M
upload_max_filesize = 64M
post_max_size = 64M
max_execution_time = 600
docker-compose.ymlを編集し、wordpress:のvolumes:セクションに下記の行を追加します
- ./uploads.ini:/usr/local/etc/php/conf.d/uploads.ini
phpMyAdmin画面からのアップロード上限は、 docker-compose.yml の末尾にある UPLOAD_LIMIT にて設定します。
既存のサイトを複製する
公開済みのサイトをローカルにコピーしたい場合などは、下記の方法で可能です。
dockerwpディレクトリに WordPress 構成ファイル用のフォルダ(wpとします)を作成し、その中に元のサイトのサーバーにアップされているファイルをコピーします- 元のサイトのデータベースをエクスポートし、
dockerwpディレクトリに置きます(export.sqlとします) docker-compose.ymlを編集し、db:のvolumes:セクションに下記の行を追加します
- ./export.sql:/docker-entrypoint-initdb.d/export.sql
docker-compose up -dでサイトを立ち上げます
上記は、新規サイト用のファイルが wp に自動生成される代わりに手順1のファイルを使用し、初回の立ち上げのみ export.sql をデータベースにインポートする、という設定になります。
サイトURLをローカル用に変える手順は、通常の手順と変わりません。上記の手順2で、 export.sql を編集してあらかじめ siteurl と home の値をローカル用のURLに変えておくと楽かもしれません。
wp/wp-config.php に記載のデータベース情報は docker-compose.yml の内容で上書きされるので、元のサイトとは異なるログイン情報やデータベース名を docker-compose.yml で設定しておくことをおすすめします。