はじめに
こちらの記事のWEBサーバーと同じものを、dockerを使ってつくりました。

RaspberryPi(以下ラズパイ)OS(システム)の冗長化
冗長化が不要な方は、ここはとばしてください。
ラズパイのシステムが入っているストレージをRAID1にして冗長化します。
こちらのいずれかの記事を参照ください。
dockerのインストールとユーザー権限で使えるようにする
dockerのインストール
aptでdockerをインストールする場合、最新バージョンでないことがあります。
最新版を使いたいので、Docker公式サイトのインストールスクリプトを使う方法でインストールします。
Docker公式サイトのインストールスクリプトのダウンロード
curl -fsSL https://get.docker.com -o get-docker.shdockerのインストール
sudo sh get-docker.shdockerのバージョン確認
docker -vユーザー権限で使えるようにする
ユーザー権限でつかえるようにする
sudo gpasswd -a $USER docker
newgrp dockerdockerでWordPress webサーバーをつくる
前提条件
- Raspberry Pi 5 (メモリは4GBあれば充分、4Bでも可)
- Raspberry Pi OS Release 1 Oct 2025 -- Debian ver 13(trixie)
- webサーバー:apache2
- データベースサーバー:mariaDB 11.8.3
- 永続的オブジェクトキャッシュ:redis 8.2.2
- phpの設定は、別ファイルを作っておいてコピーする方法をとる
- リバースプロキシ対応 リバースプロキシのIPアドレス:192.168.0.218
- WordPressのプラグイン EWWW Image Optimizerに対応
- dockerのディレクトリ(フォルダ)-ファイルの構成は以下

ディレクトリ(フォルダ)作成
必要なディレクトリ(フォルダ)を作成します
必要なディレクトリ(フォルダ)を作成
mkdir ~/wp-docker
cd ~/wp-docker
mkdir conf database redis wordpressdocker-compose.yamlの作成
docker-compose.ymlの作成
nano docker-compose.yml以下の内容を記載します。
docker-compose.ymlの内容
services:
wordpress:
build:
context: .
dockerfile: Dockerfile
image: wordpress:php8.4-apache
container_name: wp
ports:
- 8080:80
depends_on:
db:
condition: service_started
redis:
condition: service_healthy
volumes:
- ./wordpress:/var/www/html:rw
- ./conf/php.ini:/usr/local/etc/php/conf.d/php.ini:ro
- ./conf/remoteip.conf:/etc/apache2/conf-available/remoteip.conf:ro
- ./conf/headers.load:/etc/apache2/mods-enabled/headers.load:ro
environment:
WORDPRESS_DB_HOST: db
WORDPRESS_DB_NAME: webdata #データベース名
WORDPRESS_DB_USER: WebUser1 #データベースのユーザー名
WORDPRESS_DB_PASSWORD: User1Pass #データベースのユーザーパスワード
restart: unless-stopped
#ループバック対策 web URL:リバースプロキシのアドレス と記載
extra_hosts:
- "xxx.yyy.zz:192.168.0.218"
db:
image: mariadb:11.8.3
container_name: wp_db
security_opt:
- no-new-privileges:true
hostname: db
#Docker外からもアクセス出きるようにポートを設定
# mysql -P 13306 -u[user] -p[pass] でアクセス化
ports:
- 13306:3306
environment:
MYSQL_DATABASE: webdata #データベース名
MYSQL_USER: WebUser1 #データベースのユーザー名
MYSQL_PASSWORD: User1Pass #データベースのユーザーパスワード
MYSQL_ROOT_HOST: localhost
MYSQL_ROOT_PASSWORD: root
TZ: Asia/Tokyo
volumes:
- ./database:/var/lib/mysql:rw
healthcheck:
test: ["CMD-SHELL", "mariadb -uroot -proot -e 'SELECT 1;' || exit 1"]
interval: 10s
timeout: 5s
retries: 5
start_period: 30s
restart: unless-stopped
redis:
# image: redis:latest
image: redis:8.2.2
container_name: wp_redis
healthcheck:
test: ["CMD-SHELL", "redis-cli ping || exit 1"]
environment:
TZ: Asia/Tokyo
volumes:
- ./redis:/data:rw
restart: unless-stopped
Dockerfileの作成
Dockerfileの作成
nano Dockerfile以下の内容を記載
Dockerfileの内容
#php8.4-apacheはdocker-compose.ymlで指定したもの
FROM wordpress:php8.4-apache
#モジュールの追加
COPY conf/headers.load /etc/apache2/mods-enabled/headers.load
#リバーシプロキシ対策
RUN a2enmod remoteip
# mod_remoteip の設定ファイルを追加
COPY conf/remoteip.conf /etc/apache2/conf-available/remoteip.conf
RUN a2enconf remoteip
#EWWW Image Optimizerプラグイン対策
# 必要なツールをインストール
RUN apt-get update && apt-get install -y \
gifsicle \
jpegoptim \
optipng \
libjpeg-progs \
&& apt-get cleanconfディレクトリ内header.load の作成
header.load の作成
nano conf/header.load以下の内容を記載
header.loadの内容
LoadModule headers_module /usr/lib/apache2/modules/mod_headers.soconfディレクトリ内php.ini の作成
php.ini の作成
nano conf/php.ini以下の内容を記載(環境にあわせて変更ください)
php.iniの内容
max_execution_time=300
memory_limit=512M
post_max_size=512M
upload_max_filesize=512M
max_input_time=600
max_input_vars=2000
date_timezone=Asia/Tokyo
opcache.revalidate_freq=60
opcache.fast_shutdown=1
opcache.jit=1205
opcache.jit_buffer_size=16Mconfディレクトリ内remoteip.conf の作成
remoteip.conf の作成
nano conf/remoteip.conf以下の内容を記載(環境にあわせて変更ください)
remoteip.confの内容
# remoteip.conf
RemoteIPHeader X-Forwarded-For
#リバースプロキシがDocker内にある場合。Dockerのbridgeネットワーク範囲を指定
#RemoteIPTrustedProxy 172.17.0.0/16
#リバースプロキシが外部の場合 そのリバースプロキシのIPアドレスを記載
RemoteIPTrustedProxy 192.168.0.218起動
起動
docker compose up -d リバースプロキシの設定
SynologyNASのリバースプロキシは、以下のようにします。

赤枠内は、環境にあわせて変更してください(前述のdocker-compose.yamファイル内の記述と一致している必要あり)
WordPressの初期設定
ブラウザでhttps://xxx.yyy.zzにアクセスすれば、WordPressの初期設定画面が表示されます。
プラグインRedis Object Cache導入前にやること
プラグインRedis Object Cacheを導入するまえに、WordPressの設定ファイル wp-config.phpを変更します。
こうしないとプラグインが認識してくれません。
wp-config.phpを編集
sudo nano ~/wp-docker/wordpress/wp-config.php以下を追加
define('WP_REDIS_HOST', 'redis');
define('WP_REDIS_PORT', 6379); おわりに
なにかの参考になればさいわいです。






コメント