WordPressしたい(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


Composeしたい(wordpress

# docker-wordpress/docker-compose.yml

services:
  # WordPressコンテナ
  wordpress:
    image: wordpress
    # 依存関係の設定
    # db -> wordpressの順にコンテナを作成する
    depends_on:
      - db
    # 再起動の設定
    restart: always
    # WordPressの環境変数
    environment:
      # DBのコンテナ名
      WORDPRESS_DB_HOST: db
      # DBのユーザー名
      WORDPRESS_DB_USER: exampleuser
      # DBのパスワード
      WORDPRESS_DB_PASSWORD: examplepass
      WORDPRESS_DB_NAME: exampledb
    # ポート設定
    ports:
      - "8080:80"
    # ボリューム設定
    volumes:
      - wp-data:/var/www/html

  # MySQLコンテナ
  db:
    image: mysql:5.7
    restart: always
    environment:
      MYSQL_DATABASE: exampledb
      MYSQL_USER: exampleuser
      MYSQL_PASSWORD: examplepass
      MYSQL_RANDOM_ROOT_PASSWORD: "1"
    volumes:
      - db-data:/var/lib/mysql

# named volumeの設定
volumes:
    wp-data:
    db-data:

設定の概要

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

リファレンス