005. ベースイメージの刷新 (Debian 13 & Alpine 3.23)
コンテキスト
プロジェクト開始当初、Dockerベースイメージとして debian:bullseye (Debian 11) と alpine:3.20 が使用されていました。 しかし、2026年2月時点でこれらのバージョンは古くなっており、最新のセキュリティパッチやパッケージ(特にPHP)の恩恵を受けるために、最新の安定版へアップデートする必要がありました。
意思決定
すべてのDockerベースイメージを、以下の最新安定版(2026年2月時点)に更新することを決定しました。
| サービス | 旧バージョン | 新バージョン | 備考 |
|---|---|---|---|
| Core Services (MariaDB, Nginx, WordPress) | Debian 11 (Bullseye) | Debian 13 (Trixie) | PHPバージョンが 7.4 から 8.4 へ大幅アップグレード |
| Bonus Services (Redis, FTP, Adminer) | Debian 11 (Bullseye) | Debian 13 (Trixie) | - |
| Website | Alpine 3.20 | Alpine 3.23 | - |
実装詳細と変更点
1. PHPバージョンの更新 (7.4 -> 8.4)
Debian 13 (Trixie) の標準リポジトリでは PHP 8.4 が採用されています。 これに伴い、wordpress/Dockerfile および設定ファイルを以下のように変更しました。
- パッケージ名の汎用化:
php7.4-fpmなどのバージョン指定をphp-fpm等に変更し、OS標準のバージョン(8.4)がインストールされるようにしました。 - 設定ファイルパスの変更: PHP-FPMの設定ファイルパスを
/etc/php/7.4/...から/etc/php/8.4/...に更新しました。
2. MariaDB初期化プロセスの修正
Debian 13 (MariaDB 11.x系) において、従来の mysql_install_db コマンドや service コマンドの挙動に変更がありました。 initial_db.sh スクリプトを以下の通り修正しました。
- 初期化コマンド:
mysql_install_db(非推奨) からmariadb-install-dbへ変更。 - 一時起動:
service mariadb startではなく、mariadbd --skip-networking &を使用してバックグラウンドでプロセスを直接起動し、初期設定(ユーザー作成等)を行う方式に変更しました。
結果
- セキュリティ向上: 最新のOSとパッケージを使用することで、既知の脆弱性への対策が強化されました。
- パフォーマンス向上: PHP 8.4 へのアップグレードにより、WordPressの実行速度向上が期待できます。
- 互換性: 検証の結果、WordPress、Adminer、およびその他のサービスは問題なく動作することを確認しました。
参照
- Debian Trixie: Debian Trixie Release Information / Debian Packages (Trixie)
- Alpine Linux: Alpine Linux Releases
- MariaDB: mariadb-install-db Documentation
- PHP in Debian: Package: php (Debian Trixie)