Dockerを利用したWordPressの開発環境をwp-cliを使ってさくっと構築する
はじめに
WordPressの開発を複数人で行う時に、テーマファイルをgitで管理するけど、WordPressの本体やデータベースファイルまではgitで管理することはないと思います。そのような場合、ローカルPC上にWordPressの開発環境を作るのが面倒だったりします。特に利用するプラグインが10個くらいあると、それを管理画面からインストールしているとつらくなります。
そんな面倒な構築作業はコード化してしまえばいいよねってことで、Docker環境でさくっと作ってみました。
最初に用意するもの
- Docker環境
- 本記事では、Mac OS + docker desktop 2.1.0.1を使用しています
- 以下のファイル
- docker-compose.yml
- Dockerfile
- WordPressのインストールシェル
ファイル
docker-compose.yml
- WordPress Coreのコンテナは、wp-cliからインストールするため使いません
- パスワード等は各自書き換えてください
docker-compose.yml
version: '2'
services:
db:
image: mysql:5.7
volumes:
- ./mysql:/var/lib/mysql
ports:
- 3306:3306
networks:
- wpnet
environment:
- MYSQL_DATABASE=wordpress
- MYSQL_USER=scott
- MYSQL_PASSWORD=tiger
- MYSQL_ROOT_PASSWORD=root
app:
build:
context: ./app
dockerfile: Dockerfile
volumes:
- ./html:/var/www/html
- ./wp-install.sh:/tmp/wp-install.sh
ports:
- 80:80
depends_on:
- db
networks:
- wpnet
cli:
image: wordpress:cli-2.3.0-php7.1
volumes_from:
- app:rw
networks:
- wpnet
networks:
wpnet:
app/Dockerfile
- WordPressを起動させるために必要なextensionをインストールしています
FROM php:7.1-apache
RUN \
{ apt-get update; \
apt-get install -y zlib1g-dev libzip-dev; \
docker-php-ext-install zip; \
docker-php-ext-install mysqli; \
docker-php-ext-configure zip; \
docker-php-ext-configure mysqli ; \
}
wp-install.sh
- このファイルでWordPressのダウンロード、設定ファイル作成、インストール、プラグインインストールを行なっています
wp-install.sh
#!/bin/bash
set -ex;
WPINSTALLDIR=/var/www/html
wp core download \
--locale=ja --version=5.2.2 --path=${WPINSTALLDIR}
wp config create \
--dbname=wordpress --dbuser=scott --dbpass=tiger --dbhost=db:3306 \
--force --path=${WPINSTALLDIR}
wp core install \
--url=localhost --title=テスト用WordPress \
--admin_user=hogehoge \
--admin_password=passpasspass \
--admin_email=your-emailaddress \
--path=${WPINSTALLDIR}
wp plugin install \
classic-editor advanced-custom-fields custom-post-type-ui custom-post-type-permalinks \
tinymce-advanced \
--activate --path=${WPINSTALLDIR}
-
wp plugin install
でインストールするプラグインを指定しています。
構築方法
WordPress本体とプラグインのインストール
- docker-composeからコンテナを起動します
$ docker-compose -f "docker-compose.yml" up -d --build
Creating network "wordpress-cli_wpnet" with the default driver
Creating wordpress-cli_db_1 ... done
Creating wordpress-cli_app_1 ... done
Creating wordpress-cli_cli_1 ... done
- 起動が終わったらコンテナにログインします
$ docker-compose run --rm cli bash
Starting wordpress-cli_db_1 ... done
Starting wordpress-cli_app_1 ... done
bash-5.0$
- ログイン後、用意しておいたインストールシェルを実行します
bash-5.0$ chmod +x /tmp/wp-install.sh
bash-5.0$ /tmp/wp-install.sh
+ wp core download --locale=ja --path=/var/www/html/wp --version=5.2.2 --force
Creating directory '/var/www/html/wp/'.
Downloading WordPress 5.2.2 (ja)...
(以下、省略)
- ここまでできたらWordPressにログインしてみましょう。WordPressのインストールとともにプラグインのインストールも完了しています!
Custom Post Type UI プラグインを使っている場合
- 本記事では、Mac OS + docker desktop 2.1.0.1を使用しています
- docker-compose.yml
- Dockerfile
- WordPressのインストールシェル
version: '2'
services:
db:
image: mysql:5.7
volumes:
- ./mysql:/var/lib/mysql
ports:
- 3306:3306
networks:
- wpnet
environment:
- MYSQL_DATABASE=wordpress
- MYSQL_USER=scott
- MYSQL_PASSWORD=tiger
- MYSQL_ROOT_PASSWORD=root
app:
build:
context: ./app
dockerfile: Dockerfile
volumes:
- ./html:/var/www/html
- ./wp-install.sh:/tmp/wp-install.sh
ports:
- 80:80
depends_on:
- db
networks:
- wpnet
cli:
image: wordpress:cli-2.3.0-php7.1
volumes_from:
- app:rw
networks:
- wpnet
networks:
wpnet:
FROM php:7.1-apache
RUN \
{ apt-get update; \
apt-get install -y zlib1g-dev libzip-dev; \
docker-php-ext-install zip; \
docker-php-ext-install mysqli; \
docker-php-ext-configure zip; \
docker-php-ext-configure mysqli ; \
}
#!/bin/bash
set -ex;
WPINSTALLDIR=/var/www/html
wp core download \
--locale=ja --version=5.2.2 --path=${WPINSTALLDIR}
wp config create \
--dbname=wordpress --dbuser=scott --dbpass=tiger --dbhost=db:3306 \
--force --path=${WPINSTALLDIR}
wp core install \
--url=localhost --title=テスト用WordPress \
--admin_user=hogehoge \
--admin_password=passpasspass \
--admin_email=your-emailaddress \
--path=${WPINSTALLDIR}
wp plugin install \
classic-editor advanced-custom-fields custom-post-type-ui custom-post-type-permalinks \
tinymce-advanced \
--activate --path=${WPINSTALLDIR}
wp plugin install
でインストールするプラグインを指定しています。WordPress本体とプラグインのインストール
- docker-composeからコンテナを起動します
$ docker-compose -f "docker-compose.yml" up -d --build
Creating network "wordpress-cli_wpnet" with the default driver
Creating wordpress-cli_db_1 ... done
Creating wordpress-cli_app_1 ... done
Creating wordpress-cli_cli_1 ... done
- 起動が終わったらコンテナにログインします
$ docker-compose run --rm cli bash
Starting wordpress-cli_db_1 ... done
Starting wordpress-cli_app_1 ... done
bash-5.0$
- ログイン後、用意しておいたインストールシェルを実行します
bash-5.0$ chmod +x /tmp/wp-install.sh
bash-5.0$ /tmp/wp-install.sh
+ wp core download --locale=ja --path=/var/www/html/wp --version=5.2.2 --force
Creating directory '/var/www/html/wp/'.
Downloading WordPress 5.2.2 (ja)...
(以下、省略)
- ここまでできたらWordPressにログインしてみましょう。WordPressのインストールとともにプラグインのインストールも完了しています!
Custom Post Type UI プラグインを使っている場合
カスタム投稿の設定をWordPressの管理画面から行えるプラグインですが、このプラグインはwp-cliに対応しています。設定をjsonに出力しておけば、簡単に取り込むことができます。
bash-5.0$ wp cptui
usage: wp cptui export [--type=<type>] [--dest-path=<path>]
or: wp cptui import [--type=<type>] [--data-path=<path>]
- typeは、
post_type
ortaxonomy
を指定します
post_typeの設定をimportする
wp cptui import --type=post_type --data-path=/var/www/html/_conf/cptui-post.json
これでカスタム投稿の設定取り込みもコード化できます!
wp-cliについて
- 上記以外にも初期時に必要なtermを作ったりすることもできます。
-
wp-cliを使うことによって、WordPressとプラグインのインストールをコード化することができました。これにより、複数人で開発する際に、環境を揃えることが容易になるし、一度壊した環境を再度構築することが簡単になります。これで管理画面からプラグインを1個づつインストールする必要がなくなった!!
- wp-cliは、WordPressの最新版にアップグレードすることができるたり、ユーザー登録ができたりと、開発環境だけでなく、本番環境で利用してもメリットがあるツールだと思います。本記事では、Docker上で使っていますが、Docker使っていないWordPressでも使えます。
- 参照:wp core update
- 参照:wp user
最後に
- 参照:wp core update
- 参照:wp user
初めてwp-cliを使いましたが、こんな便利なツールがあったなんてと作者に感謝感激です。便利な使い方を見つけたら、また記事投稿したいと思います。
何か間違いや、こんな使い方もありますよってことはコメントいただけると助かります。
参考サイト
Author And Source
この問題について(Dockerを利用したWordPressの開発環境をwp-cliを使ってさくっと構築する), 我々は、より多くの情報をここで見つけました https://qiita.com/izanari/items/73fef6571e7772acb2d7著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .