🐳
DockerでWPマルチサイトを構築
とりあえずなメモ
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は英語版なので、言語やタイムゾーンを適当なものに変更すれば完了です。
マルチサイトの追加はダッシュボードから行えます。
参考サイト
Discussion