LoginSignup
14
10

More than 3 years have passed since last update.

Docker composeでWordpressマルチサイトの開発環境構築する備忘録

Last updated at Posted at 2020-05-13

個人的な備忘録

Wordpressマルチサイト

1つのWordPressで複数のサイトを運用可能にすることで、共通のテンプレートやプラグインが利用できる機能
対応していないプラグインもあるが、全体で共通で利用するだけでなく、サイトごとに個別で有効化することもできる
機能として以下の3種類がある

サブディレクトリ型 マルチサイト

  • kamihork.com/site1
  • kamihork.com/site2

サブドメイン型 マルチサイト

  • site1.kamihork.com
  • site2.kamihork.com

複数ドメイン型 マルチサイト

  • site1-kamihork.com
  • site2-kmaihork.com

Wordpressマルチサイトでの、サブドメイン形式での構築手順

サブドメイン形式を選択する場合、予約済みドメイン(localhost)だとそれを実現できない
なので、これを実現するのに、lvh.meというループバックドメインを利用する
※ 参考 : https://techracho.bpsinc.jp/ebi/2020_04_23/91311

lvh.me

2020/5/14時点での、有効期限は1年間ぐらいある

$ whois lvh.me | grep Expiry
Registry Expiry Date: 2021-06-02T00:35:34Z

手順

Dockerを確認

$ docker -v
Docker version 18.09.2, build 6247962

$ docker-compose -v
docker-compose version 1.23.2, build 1110ad01

docker-compose.ymlを作成

docker-compose.yml
version: '1.0'

services:
  db:
    image: mysql:5.7
    volumes:
      - ./mysql:/var/lib/mysql
    ports:
      - 3306:3306
    networks:
      - wpnet
    environment:
      - MYSQL_DATABASE=kamihork-db
      - MYSQL_USER=kamihork
      - MYSQL_PASSWORD=pass
      - MYSQL_ROOT_PASSWORD=root

  app:
    build:
      context: ./app
      dockerfile: Dockerfile
    volumes:
      - ./html:/var/www/html
      - ./wp-install.sh:/tmp/wp-install.sh
    ports:
      - 80:80
    depends_on:
      - db
    networks:
      - wpnet

  cli:
    image: wordpress:cli-2.3.0-php7.1
    volumes_from:
      - app:rw
    networks:
      - wpnet

networks:
  wpnet:

Dockerファイルを作成

FROM php:7.1-apache

RUN \
  { apt-get update; \
    apt-get install -y zlib1g-dev libzip-dev; \
    docker-php-ext-install zip; \
    docker-php-ext-install mysqli; \
    docker-php-ext-configure zip; \
    docker-php-ext-configure mysqli ; \
  }

wordpress cliを利用してもろもろ初期設定をするshellを作成

プラグインのインストールは、wp plugin install で可能
マルチサイトのインストールは、 wp core multisite-install で可能

wp-install.sh
#!/bin/bash

set -ex;
INSTALLDIR=/var/www/html

wp core download \
    --locale=ja --version=5.2.2 --path=${INSTALLDIR}

wp config create \
    --dbname=kamihork-db --dbuser=kamihork --dbpass=pass --dbhost=db:3306 \
    --force --path=${INSTALLDIR}

wp core multisite-install \
    --url=www.lvh.me --subdomains --title='kamihorkのマルチサイト' \
    --admin_user=kamihork --admin_password=pass --admin_email=hoge@fuga.com --allow-root

wp site create \
    --slug=sub --title='kamihorkのマルチサイト @サブ' --allow-root

コンテナを起動

$ docker-compose up -d --build

用意したシェルを実行

# ログイン
$ docker-compose run --rm cli bash

# 権限変える
$ chmod +x /tmp/wp-install.sh

# 実行
$ /tmp/wp-install.sh

コンテナを削除終了

$ docker-compose down --volumes

プロセス確認

$ docker ps

image確認

$ docker images

サイトの確認

本体サイト

http://lvh.me/
http://lvh.me/wp-admin/index.php

サブドメインサイト

http://sub.lvh.me/
http://sub.lvh.me/wp-admin/index.php

参考記事など

Docker選定に関する記事

Dockerとは
迷える子羊に捧げるコンテナ環境徹底比較
Docker導入するべき?するべきではない?

マルチサイトについて

WordPressマルチサイトとは?メリットデメリット丸わかり
複数のWordPressでサブドメインを運用する5つのポイント
WordPressマルチサイト対応プラグインの作り方
ループバックドメインの有効期限

AWS+Wordpressに関する記事

Dockerの利用

Dockerを利用したWordPressの開発環境をwp-cliを使ってさくっと構築する
Docker Composeを使ってWordPressが動作するローカル環境を作る
lvh.meドメインを使って、サブドメイン形式のWordPressマルチサイトのDocker開発環境構築
docker-compose コマンドまとめ
docker-compose.ymlの書き方について解説してみた
Dockerfileとは

AWS EC2 の利用

WordPress を Amazon EC2 インスタンスにデプロイする
WordPress ウェブサイトを構築する
小中規模向け低コストで可用性/拡張性の高いWordPress アーキテクチャ
AWS の WordPress High Availability by Bitnami
AWS再入門2018 WordPress on AWS編
[和訳]WordPress ベストプラクティス on AWS

AWS ECS の利用

Amazon ECSの主な機能と使い方
WordPressをAWSのDockerで公開
Docker環境をAWS ECSでデプロイするまで
AWS ECSでDockerコンテナ管理入門
CodePipelineからECSにBlue/Greenデプロイする

14
10
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
14
10