🐳

DockerでWPマルチサイトを構築

2023/11/09に公開

とりあえずなメモ

lvh.me

マルチサイトでサブドメイン形式を使用する場合、予約済みドメイン(localhost,example.comなど)は選択できないので、localhostと同様にループバックドメインとして使用できるlvh.meドメインを使用します。

ファイル

ファイル構成

html
app
  php
    php.ini
  Dockerfile
.env
docker-compose.yml

php.ini

All in one Migrationファイルをアップロードするため最大アップロードサイズを変更

upload_max_filesize = 4096M
post_max_size = 4096M

Dockerfile

wp-cliをインストール

FROM wordpress:6.3-php8.2-apache

# install wp-cli
RUN set -ex; \
  curl -O https://raw.githubusercontent.com/wp-cli/builds/gh-pages/phar/wp-cli.phar; \
  chmod +x wp-cli.phar; \
  mv wp-cli.phar /usr/local/bin/wp

.env

DB名やパスワードは適宜変更

WORDPRESS_DB_NAME=wp_xxxx
WORDPRESS_DB_USER=wp_00000xxxxxxx
WORDPRESS_DB_PASSWORD=pass

MYSQL_DATABASE=wp_xxxx
MYSQL_USER=wp_00000xxxxxxx
MYSQL_PASSWORD=pass
MYSQL_RANDOM_ROOT_PASSWORD=yes

docker-compose.yml

動作を軽くするためにthemesフォルダとpluginsフォルダのみマウント
(pluginsフォルダがなくても良い場合は17行目を削除)

version: '3'

services:
  wordpress:
    image: wordpress:latest
    build:
      context: ./app
      dockerfile: Dockerfile
    ports:
      - "80:80"
    depends_on:
      - mysql
    env_file: .env
    volumes:
      - wp_data:/var/www/html/
      - ./html/htdocs/wp-content/themes:/var/www/html/wp-content/themes/
      - ./html/htdocs/wp-content/plugins:/var/www/html/wp-content/plugins/
      - ./app/php/php.ini:/usr/local/etc/php/php.ini
  mysql:
    image: mysql:5.7
    env_file: .env
    ports:
      - "3306:3306"

volumes:
  wp_data:

手順

まず docker-compose up -d --build でDockerを起動。
この時点ではwpコンテナを立ち上げたのみで、ブラウザでlocalhostに接続するとwpのセットアップ画面が表示されます。
それは置いておいて docker-compose exec wordpress bash でwpコンテナに接続。

更にwp --info でwp-cliが使えることを確認。

root@untarakantara:/var/www/html# wp --info
OS:     Linux 5.10.16.3-microsoft-standard-WSL2 #1 SMP Fri Apr 2 22:23:49 UTC 2021 x86_64
Shell:
PHP binary:     /usr/local/bin/php
PHP version:    8.2.10
php.ini used:   /usr/local/etc/php/php.ini
MySQL binary:
MySQL version:
SQL modes:
WP-CLI root dir:        phar://wp-cli.phar/vendor/wp-cli/wp-cli
WP-CLI vendor dir:      phar://wp-cli.phar/vendor
WP_CLI phar path:       /var/www/html
WP-CLI packages dir:
WP-CLI cache dir:       /root/.wp-cli/cache
WP-CLI global config:
WP-CLI project config:
WP-CLI version: 2.8.1

wp-cliを使用して初期構築。
今回はマルチサイトなのでwp core multisite-installを使用します。

root@untarakantara:/var/www/html# wp core multisite-install --url='www.lvh.me' --subdomains --title='サイト名' --admin_user='@dmin_site' --admin_password='untarakantara' --admin_email='untarakantara@example.com' --allow-root

必須パラメータをまとめて入れ込んであるためコマンドが非常に長くなっていますが、
ベースurlがwww.lvh.meのマルチサイトが無事構築されたはずです。
http://www.lvh.me にアクセスしてみましょう。

インストールされるWPは英語版なので、言語やタイムゾーンを適当なものに変更すれば完了です。
マルチサイトの追加はダッシュボードから行えます。

参考サイト

https://techracho.bpsinc.jp/ebi/2020_04_23/91311
https://qiita.com/kamihork/items/1b15c6b8e6532153298c
https://upd.world/docker-compose-wordpress/
https://qiita.com/izanari/items/73fef6571e7772acb2d7
https://it-web-life.com/wpcli_docker_wordpress/

Discussion