WordPress(PHP-FPM)マルチステージビルド+Nginx+MySQLでDocker環境作成

WordPress(PHP-FPM)マルチステージビルド+Nginx+MySQLでDocker環境を作成 Docker

WordPress開発環境をDockerで構築する際、公式イメージを使うだけでは冗長な構成やサイズが肥大してしまいます。

本記事では、WordPress+ PHP-FPMをマルチステージビルドで構築し、NginxとMySQLを使った軽量構成のWordPress開発環境をDocker Composeで構築する方法を解説します。

構成内容

  • WordPress を PHP-FPM と組み合わせて軽量動作
  • 最新 Nginx(1.29)と MySQL(8.4)を使用
  • マルチステージビルドでPHP拡張のビルドを分離
  • docker-compose による自動構築

ディレクトリ構成

PHP-FPM + WordPressのマルチステージDockerfile作成

【説明】

ビルドステージ (FROM php:8.3-fpm AS builder)
FROM php:8.3-fpm AS builder:
php:8.3-fpmというPHPの公式イメージ(PHP-FPMがプリインストールされているもの)をベースイメージとして使用します。
AS builderは、このステージにbuilderという名前を付けています。これにより、後のステージでこのステージからファイルや成果物をコピーできるようになります。

RUN apt-get update && apt-get install -y ...:
Debianベースのイメージ(php:8.3-fpm)でパッケージリストを更新し、WordPressやPHP拡張機能が必要とするシステムライブラリ(libjpeg-dev, libpng-dev, libfreetype6-dev, libzip-dev, unzip, wget)をインストールします。

&& docker-php-ext-configure gd --with-freetype --with-jpeg \ && docker-php-ext-install gd mysqli opcache zip:
gd(画像処理)、mysqli(MySQLデータベース接続)、opcache(PHPコードの高速化)、zip(ZIPアーカイブ操作)といったPHP拡張機能を設定し、インストールします。

&& apt-get clean && rm -rf /var/lib/apt/lists/*:
インストール後に不要になったAPTキャッシュや一時ファイルを削除し、イメージのサイズを削減します。

WORKDIR /usr/src:
以降のコマンドが実行されるディレクトリを/usr/srcに設定します。

RUN wget https://wordpress.org/latest.tar.gz \ && tar -xzf latest.tar.gz \ && rm latest.tar.gz:
WordPressの最新版のtar.gzファイルをダウンロードします。
ダウンロードしたファイルを解凍します。これにより/usr/src/wordpressディレクトリにWordPressのファイルが展開されます。
ダウンロードしたtar.gzファイルを削除し、イメージのサイズを削減します。

ランタイムステージ (FROM php:8.3-fpm-alpine)
FROM php:8.3-fpm-alpine:
php:8.3-fpm-alpineというAlpine LinuxベースのPHPイメージをベースとして使用します。
RUN apk add --no-cache libpng freetype libjpeg-turbo libzip bash curl:
Alpine Linuxのパッケージマネージャーapkを使用して、WordPressの実行に必要な最小限のシステムライブラリをインストールします。
RUN docker-php-ext-install mysqli opcache:
ランタイムに必要なPHP拡張機能(mysqliとopcache)をインストールします。
COPY --from=builder /usr/src/wordpress /var/www/html:
これがマルチステージビルドの重要な部分です。
前のbuilderステージでダウンロード・解凍されたWordPressのファイル一式を、このランタイムステージの/var/www/htmlディレクトリにコピーします。
RUN chown -R www-data:www-data /var/www/html:
コピーされたWordPressファイルの所有者とグループを、PHP-FPMプロセスが通常実行されるwww-dataユーザーに変更します。
WORKDIR /var/www/html:
コンテナが起動したときのデフォルトの作業ディレクトリを/var/www/htmlに設定します。
EXPOSE 9000:
このコンテナがポート9000でリッスンすることを示します。
PHP-FPMは通常このポートでWebサーバー(NginxやApacheなど)からのリクエストを待ち受けます。
CMD ["php-fpm"]:
このイメージからコンテナが起動したときに実行されるデフォルトのコマンドを定義します。
ここではPHP-FPMプロセスを開始します。

Nginx用の設定ファイル作成

docker-compose.yml の作成

コンテナ起動

イメージサイズの確認

ブラウザでWordPressを設定する

まとめ

マルチステージビルドを活用して、サーバーリソースを抑えて効率的に動作する軽量な WordPress(PHP-FPM)+Nginx+MySQL の組み合わせたDocker環境を作成しました。

タイトルとURLをコピーしました