27
9

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Docker環境でのWordPress構築(Bedrock利用)

Last updated at Posted at 2023-12-02

はじめに

bedrock を利用して、dockerコンテナにてWordPress環境を構築するノウハウです。

環境

以下で動作確認を行っております。

  • M2 Macbook Air
  • MacOS Sonoma(14.1.1)
  • Docker Desktop 4.17.0

構築されるwordpress環境

2023/11/20時点、以下のバージョンでインストールされます。

  • Wordpress6.4.1
  • PHP8.2
  • Nginx1.25
  • MySQL8.0.34

構築手順

以下リポジトリを、git clone します。

$ git clone github.com:koda-h/docker-wordpress

.envファイルを作成します。

$ make create-env

コンテナイメージをbuildします。
build時ログサンプル

make build

コンテナを起動します。
docker-composer up時ログサンプル

make up

http://localhost:8831 を開いて、言語選択画面が表示されればインストール成功です。
image.png

インストール後はWordPressのプラグイン設定から該当のプラグインの「有効化」が必要です。

解説

image.png

docker周りの設定は etc/docker 配下にあります。

今回構築したサンプルは、「sample」というサイト名として構築しています。
これは.envに環境変数 SITE=sampleとして設定しています。
このサイト名と、各設定ファイルが連動しています。

サイト名を任意の名称にする場合、この環境変数と各設定ファイル名をサイト名と同じにする必要があります。(下記参照)

例: サイト名を hoge にする場合

vi .env
SITE=hoge

以下のディレクトリ・ファイルを作成

etc/site/hoge ※ 配下の composer.json, composer.lock もコピー等で作成する
etc/docker/app/file/hoge
etc/docker/app/plugin/hoge
etc/docker/app/theme/hoge

サイトを増やしたい場合は、上記のようにディレクトリ・ファイルを追加してください。
この1リポジトリで複数のWordPress管理ができます。(後述)

wordpressインストール

appコンテナ起動時、 docker-entrypoint.sh にて以下を行います。

dbについて

etc/docker/db/data にMySQLのファイルを格納しています。DBを再度構築する場合は、この配下のファイルを削除してください。

$ ls -1 etc/docker/db/data
#ib_16384_0.dblwr
#ib_16384_1.dblwr
#innodb_redo
#innodb_temp
auto.cnf
binlog.000001
binlog.000002
binlog.index
.
.
.

WordPressのバージョンアップについて

composerで管理しているため、composer update でバージョンアップ可能です。

## コンテナにログイン
$ docker-compose exec app bash

## composer update実施
root@7a04f6d09ea9:/var/www/html# composer update
Loading composer repositories with package information
Updating dependencies
Lock file operations: 0 installs, 18 updates, 0 removals
.
.
.
  - Upgrading roots/wordpress (6.3.2 => 6.4.1)
  - Upgrading roots/wordpress-no-content (6.3.2 => 6.4.1)
.
.
.

実行後、更新された composer.lock をcommit, push してリポジトリに反映してください。

複数サイトの管理について

以下のディレクトリ・ファイルを追加することによって、複数サイトの管理が可能です。
※別ディレクトリでgit clone して管理する必要があります。

例: hoge2 のサイトを追加する場合

etc/site/hoge2 ※ 配下の composer.json, composer.lock もコピー等で作成する
etc/docker/app/file/hoge2
etc/docker/app/plugin/hoge2
etc/docker/app/theme/hoge2

追加したサイトを起動する場合は、 上記の例では、環境変数 SITE=hoge2 としてください。

また、複数サイト同時にローカル上で起動する場合は.envの以下の環境変数のポート番号も変更する必要があります。

WEB_PORT=8832

WP_HOME='http://localhost:8832'
WP_SITEURL='http://localhost:8832'

DB_PORT=33312

WEB_PORT は nginx の config設定にも関連しています。 Dockerfileでbuild時にconfig内容の変更を行っています。

27
9
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
27
9

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?