记录如何在Docker Compose中构建WordPress多站点开发环境

个人备忘录

WordPress多站点

通过在一个WordPress平台上运营多个网站,可以利用共同的模板和插件功能。虽然并非所有插件都能支持多个网站,但可以在整体上共同使用,也可以在每个网站上单独启用。以下是三种可用功能。

子目录型多站点

    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日时,有效期大约为一年左右。

$ 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文件

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命令行工具(WordPress CLI)创建一个Shell脚本来进行各种初始设置。

安装插件可以使用 wp plugin install
安装多网站可以使用 wp core multisite-install

#!/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

执行预先设计的shell

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

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

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

删除容器已完成

$ docker-compose down --volumes

过程确认

$ docker ps

图像确认

$ 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 高可用性解决方案(由 Bitnami 提供)
AWS 2018年再入门:WordPress 在 AWS 上的使用指南
[日文翻译]在 AWS 上实践 WordPress 的最佳方法

使用AWS ECS

Amazon ECS的主要功能和用法
使用AWS Docker公開WordPress
直到使用AWS ECS部署Docker环境为止
在AWS ECS中进行Docker容器管理入门
从CodePipeline到ECS实施蓝绿部署

bannerAds