Dockerで動かしているWordPressの開発環境にWP-CLIによる設定の自動化を追加して、管理画面からポチポチ初期設定をする手間をなくしましょう。
Docker+WP-CLIでWordPressの開発環境構築をラクにする
WP-CLIとは? WP-CLIの効能
WP-CLIはコマンドラインインターフェースからWordPressの管理画面で行うような操作ができるツールです。
このWP-CLIを使って、コマンドをひとつ発行したら、WordPressのインストールからテーマの設定、プラグインのインストール等の初期設定を完了させるようにします。
WordPressテーマ開発者がgit管理するのは基本的にテーマ部分だけだと思いますが、それ以外の環境設定もコード化してgit管理できるようになります。
マシンごとに手作業で初期設定をする手間が軽減されるので、複数人で開発しているならもちろんですが、一人で開発している場合でも便利になると思います。
作業の流れ
初期設定をしてくれるコマンドを作成するまでの大まかな流れは次のようになります。
- Dockerfileでwp-cliが入ったイメージを定義
- Docker Composeの設定を作成
- WP-CLIのコマンドを叩くスクリプトを作成
Dockerfileでwp-cliが入ったイメージを定義
wordpressのイメージにwp-cliを加えたイメージを作成するDockerfileを用意します。
FROM wordpress:latest
RUN curl -O https://raw.githubusercontent.com/wp-cli/builds/gh-pages/phar/wp-cli.phar \
&& chmod +x wp-cli.phar \
&& mv wp-cli.phar /usr/local/bin/wp \
&& wp --info
Docker Composeの設定を作成
docker-compose.ymlをつくります。
version: '3'
services:
mysql:
image: mysql:5.7
container_name: mysql-myproject
volumes:
- ./data/mysql:/var/lib/mysql
environment:
MYSQL_ROOT_PASSWORD: root
MYSQL_DATABASE: myproject
MYSQL_USER: myproject
MYSQL_PASSWORD: myproject
wordpress:
depends_on:
- mysql
build: .
container_name: wordpress-myproject
ports:
- 8080:80
environment:
WORDPRESS_DB_HOST: mysql:3306
WORDPRESS_DB_NAME: myproject
WORDPRESS_DB_USER: myproject
WORDPRESS_DB_PASSWORD: myproject
volumes:
- ./data/wp-content:/var/www/html/wp-content
- ./wp-install.sh:/tmp/wp-install.sh
ポイントはこのあたり:
mysql
もwordpress
もdata
という名前のディレクトリにデータを格納して永続化していますwordpress
のbuild
で先ほど作成したDockerfileの居場所を指定しますwordpress
のvolumes
にこのあと作成する初期設定用のスクリプトを指定しておきます
WP-CLIのコマンドを叩くスクリプトを作成
wordpress
のコンテナ内で実行する初期設定用のスクリプトを作成していきます。
上記のDockerfileに書いてあるとおり、WP-CLIの wp
コマンドが使えるようになっているので、これを使ってコマンドの一覧を見ながら設定を書いていきましょう。何を設定するかはお好みですが、このくらいは最小で設定するだろうというサンプルを貼っておきます。ファイル名はwp-install.shにしました。
#!/bin/bash
# WordPressのインストール
#=======================
wp core install \
--url="http://localhost:8080" \
--title="myproject" \
--admin_user='admin' \
--admin_password='test' \
--admin_email='info@example.com' \
--allow-root
# 一般設定
# =======================
# キャッチフレーズを空にする
wp option update blogdescription --allow-root ''
# 日本語
wp language core install --allow-root --activate ja
# タイムゾーンと日時表記
wp option update --allow-root timezone_string 'Asia/Tokyo'
wp option update --allow-root date_format 'Y-m-d'
wp option update --allow-root time_format 'H:i'
# パーマリンク設定
# =======================
wp option update permalink_structure --allow-root /%year%/%monthnum%/%day%/%postname%/
# 外観
# =======================
wp theme delete --allow-root twentysixteen
wp theme delete --allow-root twentyseventeen
wp theme delete --allow-root twentynineteen
wp theme delete --allow-root twentytwenty
# プラグイン
# =======================
wp plugin delete --allow-root hello.php
wp plugin delete --allow-root akismet
# 固定ページ
# =======================
wp post create --allow-root --post_type=page --post_title='About'
Dockerコンテナを起動してスクリプトを実行
準備が整ったのであとは実行するだけです。
Dockerコンテナを起動して、
docker compose up -d
wp-install.php
を実行します。
docker exec wordpress-myproject /tmp/wp-install.sh