WP10とは?
WP10は弊社が掲げる「WordPressを使った10倍速開発」です。
10倍とは、フルスクラッチに比べて10倍ということです。
この連載ではWP開発に長く携わっている弊社のWordPress開発ベストプラクティスを発信していきます。
第一回はWordPressを最速で立ち上げるdocker-compose.ymlをご紹介します。
ミニマム構成ですが、WordPressを触ってみたいという方や、
気になるテーマやプラグインを試してみたい、或いはテーマ、プラグインを開発してみたいという方まで
幅広く活用して貰えるものだと思います。
(以下の手順はdocker-composeがインストールされている環境で進めます)
WordPressを立ち上げる手順
- プロジェクトのディレクトリにdocker-compose.ymlの空ファイルを作成
- 下記のymlの構成をコピペ
- ymlがあるディレクトリで
$ docker-compose up
http://localhost:3001/
にアクセス
WordPressは「5分間インストール」という有名なフレーズがありますが、
上記手順では1分以内でまっさらなWordPressが立ち上がります(笑)
docker-compose.ymlの構成
version: '2'
services:
wordpress:
image: wordpress:latest
ports:
- "3001:80"
environment:
WORDPRESS_DB_NAME: wordpress
WORDPRESS_DB_USER: mysql_user
WORDPRESS_DB_PASSWORD: mysql_pw
mysql:
image: mysql:5.7
environment:
MYSQL_ROOT_PASSWORD: root_pw
MYSQL_DATABASE: wordpress
MYSQL_USER: mysql_user
MYSQL_PASSWORD: mysql_pw
今回はWordPressとMySQLのイメージを使用しました。
「最速」での立ち上げを目標としているので、環境変数はあえてymlに記述しています。
(自分自身、Docker初心者の時に「WordPressのdocker-compose.ymlの構成」を調べていた時、
環境変数をDockerfileに外出ししている記事ばかりでした。
当時はDockerfileを置くディレクトリがわからず困ったという体験を踏まえています)
phpのバージョン
2018/8/3時点でPHPのバージョンは7.2.2です。
$ docker exec -ti minimumwp_wordpress_1 /bin/bash add (master)
root@613bcc058691:/var/www/html# php -v
PHP 7.2.2 (cli) (built: Feb 16 2018 23:15:49) ( NTS )
Copyright (c) 1997-2018 The PHP Group
Zend Engine v3.2.0, Copyright (c) 1998-2018 Zend Technologies
with Zend OPcache v7.2.2, Copyright (c) 1999-2018, by Zend Technologies
MySQLのバージョン
MySQLのイメージのバージョンはlatestにしていません。
latestを指定すると、MySQL8.0のコンテナが立ちます。
MySQL8.0ではパスワードの認証方法が5.7以前とは異なるため、
上記のyml構成では認証エラーとなります。
(詳しくは下記記事を参照)
Mysql8.0 ではデフォルトの認証形式を mysql_native_password から caching_sha2_password に変更している。
Docker で MySQL 8.0.4 を使う
このため、あえてMySQL5.7を指定しています。
ちなみに
mysql:
image: mysql:5.7
environment:
MYSQL_DATABASE: wordpress
MYSQL_USER: mysql_user
MYSQL_PASSWORD: mysql_pw
上記のようにymlでMYSQL_ROOT_PASSWORDを設定しないと、
MYSQL_ROOT_PASSWORDかMYSQL_ALLOW_EMPTY_PASSWORD、MYSQL_RANDOM_ROOT_PASSWORDのいずれかを設定してくださいというエラーが出ました(下記)。
mysql_1 | error: database is uninitialized and password option is not specified
mysql_1 | You need to specify one of MYSQL_ROOT_PASSWORD, MYSQL_ALLOW_EMPTY_PASSWORD and MYSQL_RANDOM_ROOT_PASSWORD
MYSQL_ROOT_PASSWORDの代わりにMYSQL_RANDOM_ROOT_PASSWORDを設定する場合は
MYSQL_RANDOM_ROOT_PASSWORD: yes
と記述すればOKです。
それでは、楽しいWPライフを!