WordPressを使いたい

Dockerを使ってWordPressを構築してみます。

作りたいもの

作りたいWordPress環境に必要そうなアイテムを書き出しておきます。 少しずつ調べながら進めていきます。

  • WordPress / PHP / MySQL

  • wp-cli

  • マルチサイト環境

  • テーマのインストールと有効化

  • 記事の作成

  • 記事のインポート

コンテナを起動したい

1$ docker container run -d -p 8080:80 --name my-wordpress wordpress

とりあえず詳細なオプションは考えずにコンテナを起動しました。 http://localhost:8080でアクセスし、構築画面にアクセスできることを確認しました。 ダイアログに沿って、データベース名(wordpress)、データベースのユーザー名(wordpress)、データベースのパスワード(wordpress)、データベースホスト(localhost)、テーブル接頭辞(wp_)を入力しました。

結果、「データベース接続確立エラー」がでました。 データベース系の設定を適当に入力したためか、そもそもデータベースが起動していないからかもしれません。 docker-compose.ymlを使って、環境変数を設定した構築を試してみます。

データベースの選定

WordPressのデータベースとしてMySQLとMariaDBが利用できます。 さらにMySQLのバージョンは5系と8系があります。 整理すると、次の3種類です

  • MySQL 5

  • MySQL 8

  • MariaDB


docker-compose.yml

# docker-wordpress/docker-compose.yml
version: "3"

services:
    wordpress:
        image: wordpress
        restart: always
        ports:
            - 8080:80
        environment:
            WORDPRESS_DB_HOST: db
            WORDPRESS_DB_USER: exampleuser
            WORDPRESS_DB_PASSWORD: examplepass
            WORDPRESS_DB_NAME: exampledb
        volumes:
            - wordpress:/var/www/html

    db:
        image: mysql:5.7
        restart: always
        environment:
            MYSQL_DATABASE: exampledb
            MYSQL_USER: exampleuser
            MYSQL_PASSWORD: examplepass
            MYSQL_RANDOM_ROOT_PASSWORD: "1"
        volumes:
            - db:/var/lib/mysql

volumes:
    wordpress:
    db:

設定の概要

version: Docker Composeのフォーマットを指定します。最新のフォーマットのバージョン(3系)を指定します。

services: 利用するコンテナの設定を定義します。WordPress用の設定と、データベース(MySQL)用の設定を定義します。

volumes: データの保存先を指定します。ここではそれぞれnamed volumeで定義していますが、bind volumeにもできます。というか、たぶんbind volumeにしておいたほうがよい。

DockerHubの

WordPressの設定

WordPressの設定はwp-config.phpに記述します。 docker-compose.yml内の環境変数(WORDPRESS_*ではじまる変数)でも変更できます。

  • -e WORDPRESS_DB_HOST=...

  • -e WORDPRESS_DB_USER=...

  • -e WORDPRESS_DB_PASSWORD=...

  • -e WORDPRESS_DB_NAME=...

  • -e WORDPRESS_TABLE_PREFIX=...

  • -e WORDPRESS_DEBUG=1