Web制作・開発会社 プレスマンのスタッフブログ

PRESSMAN*Tech

[WordPress]超簡単!DockerでWordPressを1分で立ち上げよう[WP10]

WP10とは?

WP10は弊社が掲げる「WordPressを使った10倍速開発」です。
10倍とは、フルスクラッチに比べて10倍ということです。

この連載ではWP開発に長く携わっている弊社のWordPress開発ベストプラクティスを発信していきます。

第一回はWordPressを最速で立ち上げるdocker-compose.ymlをご紹介します。
ミニマム構成ですが、WordPressを触ってみたいという方や、
気になるテーマやプラグインを試してみたい、或いはテーマ、プラグインを開発してみたいという方まで
幅広く活用して貰えるものだと思います。
(以下の手順はdocker-composeがインストールされている環境で進めます)

WordPressを立ち上げる手順

  1. プロジェクトのディレクトリにdocker-compose.ymlの空ファイルを作成
  2. 下記のymlの構成をコピペ
  3. ymlがあるディレクトリで $ docker-compose up
  4. 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ライフを!