🐳

Docker の WordPress 開発環境でメール送受信を実現する3つの方法

に公開

はじめに

WordPress の開発環境を構築する際、テストメールの送受信機能は非常に重要です。この記事では、Docker を利用した WordPress 開発環境でのメール送信機能(WP Mail SMTP)とメール受信機能(Mailpit)を統合する複数の方法を紹介します。Docker 初心者の方向けに、各構成案の compose.yaml ファイルの作成手順と、それぞれのメリット・デメリットを詳しく解説します。

自身の開発目的に合った最適な Docker イメージを選択し、compose.yamlファイルを効果的に作成できるようになることを目指しましょう。

ここでは、主に以下の 3 つの構成案を提案します。

構成案 使用する Docker イメージ 特徴
A bitnami/wordpress 初期 WordPress サイトの構築を自動化します
B wordpress 標準的な WordPress 環境の構築に適しています
C wordpress + alpine/socat socatを用いてメール転送を設定します

なお、各構成案では、上記の他に、mysqladminieraxllent/mailpit といった Docker イメージも利用します。また、ドメインについては dev.internal を使うことにします。ちなみに、internal はプライベート用途で使えるトップレベルドメインです。筆者は開発用途では dev.internal を使うようにしています。

ファイル構成

作成するフォルダとファイルの構成は次のようになります。

wp-and-mail/
├── bitnamiwp-and-mailpit/ ... 構成案A用
│   └── compose.yaml
├── wp-and-mailpit/        ... 構成案B用
│   └── compose.yaml
└── wp-and-mailpit-socat/  ... 構成案C用
    └── compose.yaml

構成案 A: bitnami/wordpress を利用した手軽な環境構築

この構成案では、bitnami/wordpress イメージを利用します。bitnami/wordpressは、WordPress 本体だけでなく、プラグインのインストールなども自動化できるため、初期の WordPress サイト環境を迅速に構築したい場合に特に手軽で推奨されます。テーマやプラグイン開発に着手する際に非常に有用です。

  • メリット
    • WordPress の初期設定やプラグインのインストールが自動化され、環境構築の手間が省けます。
    • 開発開始までの時間を大幅に短縮できます。
  • デメリット
    • Bitnami のカスタマイズが施されているため、純粋な WordPress 環境とは一部異なる場合があります。
    • 設定の柔軟性が、標準の wordpress イメージに比べて低い場合があります。
  • 推奨されるケース
    • WordPress のテーマやプラグイン開発をすぐに始めたい方。
    • 手軽に WordPress の検証環境を立ち上げたい方。
    • Docker や WordPress のセットアップに時間をかけたくない方。

サービスとイメージの構成

以下に、本構成案で利用するサービスとそれぞれの Docker イメージをまとめます。

サービス イメージ 説明
wordpress bitnami/wordpress:latest WordPress ブログのアプリケーション
db mysql:8.0 データベース
mailpit axllent/mailpit:latest メールサーバーと Web UI のメーラー
adminer adminer:5.3.0-standalone データベース操作ツール

なお、メール送信機能には WP Mail SMTP プラグインを使います。

compose.yaml ファイルの作成

compose.yaml ファイルの作成にあたり、以下のリソースを参考にしました。

実際に作成した compose.yaml は以下の通りです。パスワードはサンプルなので単純なものにしてあります。実際には複雑なものにした方が安全です。

name: bitnamiwp-and-mailpit

services:
  wordpress:
    image: bitnami/wordpress:latest
    container_name: wordpress
    hostname: wordpress
    ports:
      - "127.0.0.1:80:8080"
      # - "127.0.0.1:443:8443"
    environment:
      # WordPress 用 DB 接続情報
      WORDPRESS_DATABASE_HOST: db
      WORDPRESS_DATABASE_USER: wordpress
      WORDPRESS_DATABASE_PASSWORD: password
      WORDPRESS_DATABASE_NAME: wordpress
      # WordPress 管理用情報
      WORDPRESS_BLOG_NAME: DevSite
      WORDPRESS_USERNAME: user001
      WORDPRESS_PASSWORD: pass001
      # WordPress SMTP 接続用情報
      WORDPRESS_SMTP_HOST: mailpit # サーバーホスト名
      WORDPRESS_SMTP_PORT_NUMBER: 1025 # ポート番号
      WORDPRESS_SMTP_USER: user001@dev.internal # SMTP ユーザー
      WORDPRESS_SMTP_FROM_EMAIL: user001@dev.internal # From 用メールアドレス
      WORDPRESS_SMTP_FROM_NAME: user001 # From 用メールネーム
    depends_on:
      db:
        condition: service_healthy
    networks:
      - wp-and-mailpit-net

  db:
    image: mysql:8.0
    container_name: mysql_db
    environment:
      MYSQL_ROOT_PASSWORD: root_password
      MYSQL_DATABASE: wordpress
      MYSQL_USER: wordpress
      MYSQL_PASSWORD: password
    tmpfs:
      - /var/lib/mysql
    networks:
      - wp-and-mailpit-net
    healthcheck:
      test: ["CMD", "mysqladmin", "ping", "-h", "localhost"]
      timeout: 20s
      retries: 10

  mailpit:
    image: axllent/mailpit:latest
    container_name: mailpit
    hostname: dev.internal
    ports:
      # Mailpit Web UI
      - "127.0.0.1:8025:8025"
    networks:
      - wp-and-mailpit-net

  adminer:
    image: adminer:5.3.0-standalone
    container_name: adminer
    hostname: adminer
    networks:
      wp-and-mailpit-net:
    ports:
      - ${ADMINER_IP_PORT:-127.0.0.1:5080}:8080
    environment:
      ADMINER_DEFAULT_SERVER: db

networks:
  wp-and-mailpit-net:
    driver: bridge

mailpit サービスで、hostname: dev.internal としている点に注意してください。この指定をすることで、この compose.yaml で用意される wp-and-mailpit-net ネットワークでは dev.internal のホストは mailpit コンテナーとなります。

bitnamiwp-and-mailpit 起動

起動するには、bitnamiwp-and-mailpit ディレクトリに移動し、Docker Compose を起動します。

cd bitnamiwp-and-mailpit
docker compose up -d

次に、WordPress コンテナ内でコマンドを実行するためにアタッチします。

docker compose -p wp-and-mailpit exec wordpress bash

初期設定

プラグインの初期設定には、wp-cli コマンドの利用が簡便です。まず、wp-cli をインストールします。

curl -O https://raw.githubusercontent.com/wp-cli/builds/gh-pages/phar/wp-cli.phar
chmod +x wp-cli.phar
mv wp-cli.phar /usr/local/bin/wp

次に、WP Mail SMTP プラグイン(wp_mail_smtp)の初期設定を確認します。

wp option get wp_mail_smtp --format=json --allow-root

なお、wp コマンドは root ユーザーで使うものではないので、普通に使うとエラーになります。sudo コマンドをインストールして対応するのでも良いのですが、ここでは、より簡単な回避策である --allow-root オプションをつけて wp コマンドを実行することにしています。

続いて、wp_mail_smtp の設定を以下の内容で更新します。

cat << EOS | wp option update wp_mail_smtp --format=json --allow-root
{
  "mail": {
    "from_email": "user001@dev.internal",
    "from_name": "DevSite",
    "mailer": "smtp",
    "return_path": false,
    "from_email_force": true,
    "from_name_force": false
  },
  "smtp": {
    "autotls": false,
    "auth": false,
    "host": "mailpit",
    "encryption": "none",
    "port": 1025,
    "user": "",
    "pass": ""
  },
  "general":{"summary_report_email_disabled":false},
  "sendlayer":{"api_key":""},
  "smtpcom":{"api_key":"","channel":""},
  "sendinblue":{"api_key":"","domain":""},
  "elasticemail":{"api_key":""},
  "gmail":{"client_id":"","client_secret":""},
  "mailgun":{"api_key":"","domain":"","region":"US"},
  "mailjet":{"api_key":"","secret_key":""},
  "mailersend":{"api_key":"","has_pro_plan":false},
  "postmark":{"server_api_token":"","message_stream":""},
  "sendgrid":{"api_key":"","domain":""},
  "smtp2go":{"api_key":""},
  "sparkpost":{"api_key":"","region":"US"}
}
EOS

後で、WordPress の WP Mail SMTP の設定画面で確認するとわかりますが、最初の方にある "mail":"smtp": の設定で、使用するメールアドレスと SMTP サーバーの設定をしてあります。

テストメールの送信と確認

Web ブラウザで http://localhost/wp-admin を開いて、WordPress の管理画面にログインします。ログインに必要な情報は、compose.yaml の指定した WORDPRESS_USERNAME: user001WORDPRESS_PASSWORD: pass001 からわかります。この例の場合だと、ユーザー user001 がパスワード pass001 で作成されるので、これらの値でログインできます。

それから、テストメール送信用の画面 http://localhost/wp-admin/admin.php?page=wp-mail-smtp-tools にアクセスし、テストメールを送信してください。

メール送信後、Mailpit の Web UI である http://localhost:8025/ に Web ブラウザでアクセスし、受信トレイ(Inbox)を確認してください。

構成案 B: wordpress イメージを用いた標準的な環境構築

WordPress のテーマやプラグイン開発だけでなく、既存の WordPress サイトのバックアップをローカル環境で動作確認する場合など、より標準的で柔軟性の高い WordPress 環境が必要な場合は、Docker 公式の Docker イメージである wordpress の利用が適しています。

bitnami/wordpress イメージを利用した場合に自動化されていた WordPress のインストールや初期設定は手動で行う必要がありますが、その分、環境を細かくカスタマイズできるというメリットがあります。これにより、ご自身の特定の用途に合わせた開発環境を自由に構築することが可能になります。

  • メリット
    • より標準的でクリーンな WordPress 環境を構築できます。
    • WordPress のインストールプロセスを自分で制御できるため、カスタマイズの自由度が高いです。
    • 既存の WordPress サイトのバックアップをリストアする際に、bitnami 特有の設定に左右されずに済みます。
  • デメリット
    • WordPress 本体やプラグインの初期設定を手動で行う手間が発生します。
    • 環境構築完了までの時間と手順が増えます
  • 推奨されるケース
    • 既存の WordPress サイトのバックアップをローカルで動作確認したい方。
    • WordPress のインストールプロセスから詳細に制御したい方。
    • bitnami 特有のカスタマイズがない、純粋な WordPress 環境を好む方。

wp-and-mailpit のサービスとイメージの構成

以下に、本構成案で利用するサービスとそれぞれの Docker イメージをまとめます。

サービス イメージ 説明
wordpress wordpress:latest WordPress ブログのアプリケーション
db mysql:8.0 データベース
mailpit axllent/mailpit:latest メールサーバーと Web UI のメーラー
adminer adminer:5.3.0-standalone データベース操作ツール

wp-and-mailpit の compose.yaml ファイルの作成

この構成案では、wordpress サービスで使用するイメージが bitnami のものから wordpress:latest に変更されています。それに伴い、environment: セクションで指定する WordPress のデータベース接続に関する環境変数名が WORDPRESS_DB_HOST などに変更されている点に注意してください。他のサービスに関する設定に変更はありません。

name: wp-and-mailpit

services:
  wordpress:
    image: wordpress:latest
    container_name: wordpress
    hostname: wordpress
    extra_hosts:
      # Mailpit との通信設定(必要に応じてホスト名を解決)
      - "dev.internal:127.0.0.1"
    ports:
      # ホストの80番ポートをコンテナの80番ポートにマッピング
      - "127.0.0.1:80:80"
    environment:
      # WordPress 用 DB 接続情報
      WORDPRESS_DB_HOST: db # データベースホスト名
      WORDPRESS_DB_USER: wordpress # ユーザー名
      WORDPRESS_DB_PASSWORD: password # パスワード
      WORDPRESS_DB_NAME: wordpress # データベース名
    depends_on:
      # dbサービスが正常に起動するまでwordpressサービスの起動を待機
      db:
        condition: service_healthy
    networks:
      - wp-and-mailpit-net

  db:
    image: mysql:8.0
    container_name: mysql_db
    environment:
      MYSQL_ROOT_PASSWORD: root_password
      MYSQL_DATABASE: wordpress
      MYSQL_USER: wordpress
      MYSQL_PASSWORD: password
    tmpfs:
      # データベースファイルを一時ファイルシステムに保存、コンテナ停止時にデータを破棄
      - /var/lib/mysql
    networks:
      - wp-and-mailpit-net
    healthcheck: # データベースのヘルスチェック設定
      test: ["CMD", "mysqladmin", "ping", "-h", "localhost"]
      timeout: 20s
      retries: 10

  mailpit:
    image: axllent/mailpit:latest
    container_name: mailpit
    hostname: dev.internal
    ports:
      # MailpitのWeb UIにアクセスするためのポートマッピング
      - "127.0.0.1:8025:8025"
    networks:
      - wp-and-mailpit-net

  adminer:
    image: adminer:5.3.0-standalone
    container_name: adminer
    hostname: adminer
    networks:
      wp-and-mailpit-net:
    ports:
      # AdminerのWeb UIにアクセスするためのポートマッピング。
      # 環境変数ADMINER_IP_PORTが設定されていない場合はデフォルト値を使用
      - ${ADMINER_IP_PORT:-127.0.0.1:5080}:8080
    environment:
      # Adminerのデフォルト接続先データベースホストをdbサービスに設定
      ADMINER_DEFAULT_SERVER: db

networks:
  wp-and-mailpit-net:
    driver: bridge

wp-and-mailpit 起動

wp-and-mailpitディレクトリに移動し、Docker Compose を起動します。

cd wp-and-mailpit
docker compose up -d

WordPress コンテナ内でコマンドを実行するためにアタッチします。

docker compose -p wp-and-mailpit exec wordpress bash

wp-and-mailpit 初期設定

WordPress の初期設定には、wp-cli コマンドの利用が非常に簡便です。まず、wp-cli をインストールします。

curl -O https://raw.githubusercontent.com/wp-cli/builds/gh-pages/phar/wp-cli.phar
chmod +x wp-cli.phar
mv wp-cli.phar /usr/local/bin/wp

次に、wp-cliを使用して WordPress をインストールします。

wp core install \
    --url="http://localhost" \
    --title="${SITE_TITLE:-DevSite}" \
    --admin_user="${ADMIN_USER:-user001}" \
    --admin_password="${ADMIN_PASS:-pass001}" \
    --admin_email="${ADMIN_EMAIL:-user001@dev.internal}" \
    --skip-email \
    --allow-root;

もし、--url の指定を間違えて作成してしまった場合は、次のように homesiteurl の値を正しい値に変更すれば良いです。ここを間違えると、Web ブラウザで WordPress の管理画面を開けなくなりますから、注意しましょう。

wp option update home 'http://localhost/' --allow-root
wp option update siteurl 'http://localhost/' --allow-root

次に、メール送信機能の設定をするために、WP Mail SMTP プラグインをインストールして有効化します。

wp plugin install wp-mail-smtp --activate --allow-root
chown -R www-data:www-data /var/www/html/ # ファイル所有権をwww-dataユーザーに変更します

WP Mail SMTP の設定は、構成案 A と同様の手順で行います。

wp-and-mailpit テストメールの送信と確認

テストメールの送信と Mailpit での確認についても、構成案 A と同様の手順で実施できます。

構成案 C: socat を用いたメール転送環境の構築

通常の WordPress 開発環境では、構成案 A や B で対応できることがほとんどです。しかし、既存の WordPress サイトのバックアップをローカルマシンに展開して動作確認を行う際など、WordPress のメール送信設定で localhost が指定されており、その設定を簡単に変更できないといったケースに遭遇することがあります。

このような状況では、alpine/socatという軽量な Docker イメージを組み合わせることで、localhost:25 へのメール送信を別のホスト(ここでは Mailpit)へ転送することが可能になります。

構成案 C の技術的ポイント

この構成案の重要なポイントは、wordpress サービスを実行するコンテナのネットワークスタックを、alpine/socat コンテナと共有する点にあります。compose.yaml ファイル内で network_mode: service:wordpress と指定することで、wordpress コンテナとrelay_smtpsocatコンテナ)が同じネットワークインターフェースと IP アドレスを共有し、あたかも同じマシン上で動作しているかのように振る舞います。

これにより、WordPress が自身の localhost:25 にメールを送信しようとした際、そのトラフィックは relay_smtp コンテナによって Mailpit のポート 1025 へシームレスに転送されます。

注意点: wordpress サービスは通常、localhost:80(HTTP)や localhost:443(HTTPS)を使用します。network_mode: service:wordpress を指定した場合、relay_smtp サービスも wordpress コンテナのネットワークスタックを共有するため、relay_smtp サービス内で localhost:80localhost:443 を使おうとするとポート番号の衝突が発生します。そのため、socat で転送設定を行う際は、これらのポート番号と衝突しないように指定する必要があります。今回のケースでは、標準的な SMTP ポートである 25 を使用するため、衝突の心配はありません。

  • メリット
    • WordPress 本体の設定を変更せずに、localhost 宛のメールを Mailpit へ転送可能
    • 既存の WordPress バックアップなど、メール設定の変更が難しい環境でも柔軟に対応可能
    • ホスト側の環境と分離したコンテナー側の環境でポート転送が可能
  • デメリット
    • 構成が A 案、B 案に比べて複雑
    • ポート番号の衝突に注意
    • network_mode: service: についての理解が必要 -推奨されるケース
    • 既存の WordPress 環境(特に localhost を SMTP ホストとして設定している場合)を Docker で再現し、メール送信テストを行いたい方。
    • WordPress のメール設定を極力変更したくない方。
    • より高度な Docker Compose のネットワーク設定に挑戦したい方。

wp-and-mailpit-socat のサービスとイメージの構成

この構成案では、SMTP の転送を行うために relay_smtp サービス(alpine/socat イメージ)を追加します。その他のサービス(wordpressdbmailpitadminer)は構成案 B と同様の役割とイメージを使用します。

サービス イメージ 説明
wordpress wordpress:latest WordPress ブログのアプリケーション
db mysql:8.0 データベース
mailpit axllent/mailpit:latest メールサーバーと Web UI のメーラー
relay_smtp alpine/socat localhost:25 から Mailpit への SMTP 転送
adminer adminer:5.3.0-standalone データベース操作ツール

wp-and-mailpit-socat の compose.yaml ファイルの作成

relay_smtp サービスを追加し、wordpress コンテナのネットワークスタックを共有するように設定した compose.yaml ファイルは以下の通りです。

name: wp-and-mailpit-socat

services:
  wordpress:
    image: wordpress:latest
    container_name: wordpress
    hostname: wordpress
    extra_hosts:
      # Mailpit との通信設定(必要に応じてホスト名を解決)
      - "dev.internal:127.0.0.1"
    ports:
      # ホストの80番ポートをコンテナの80番ポートにマッピング
      - "127.0.0.1:80:80"
    environment:
      # WordPress 用 DB 接続情報
      WORDPRESS_DB_HOST: db # データベースホスト名
      WORDPRESS_DB_USER: wordpress # ユーザー名
      WORDPRESS_DB_PASSWORD: password # パスワード
      WORDPRESS_DB_NAME: wordpress # データベース名
    depends_on:
      db:
        # dbサービスが正常に起動するまでwordpressサービスの起動を待機
        condition: service_healthy
    networks:
      - wp-and-mailpit-net

  db:
    image: mysql:8.0
    container_name: mysql_db
    environment:
      MYSQL_ROOT_PASSWORD: root_password
      MYSQL_DATABASE: wordpress
      MYSQL_USER: wordpress
      MYSQL_PASSWORD: password
    # データベースファイルを一時ファイルシステムに保存、コンテナ停止時にデータを破棄
    tmpfs:
      - /var/lib/mysql
    networks:
      - wp-and-mailpit-net
    # データベースのヘルスチェック設定
    healthcheck:
      test: ["CMD", "mysqladmin", "ping", "-h", "localhost"]
      timeout: 20s
      retries: 10

  mailpit:
    image: axllent/mailpit:latest
    container_name: mailpit
    hostname: dev.internal
    ports:
      # Mailpit の Web UI にアクセスするためのポートマッピング
      - "127.0.0.1:8025:8025"
    networks:
      - wp-and-mailpit-net

  relay_smtp:
    image: alpine/socat
    container_name: relay_smtp
    depends_on:
      # 依存するコンテナーを設定
      - wordpress
      - mailpit
    # WordPress コンテナのネットワークスタックを共有することで、
    # wordpress コンテナの localhost と relay_smtp コンテナの localhost を同一化。
    network_mode: service:wordpress
    # localhost:25 へのTCP接続を mailpit:1025 へ転送するコマンド
    command: "TCP-LISTEN:25,fork TCP:mailpit:1025"
    # wordpress のネットワークスタックを共有しているため、`networks:` の指定なし
    # relay_smtp サービス自身は、wp-and-mailpit-net に直接参加する必要なし

  adminer:
    image: adminer:5.3.0-standalone
    container_name: adminer
    hostname: adminer
    networks:
      wp-and-mailpit-net:
    ports:
      # AdminerのWeb UIにアクセスするためのポートマッピング
      # 環境変数ADMINER_IP_PORTが設定されていない場合はデフォルト値を使用
      - ${ADMINER_IP_PORT:-127.0.0.1:5080}:8080
    environment:
      # Adminerのデフォルト接続先データベースホストをdbサービスに設定
      ADMINER_DEFAULT_SERVER: db

networks:
  wp-and-mailpit-net:
    driver: bridge

wp-and-mailpit-socat 起動

wp-and-mailpit-socatディレクトリに移動し、Docker Compose を起動します。

cd wp-and-mailpit-socat
docker compose up -d

WordPress コンテナ内でコマンドを実行するためにアタッチします。

docker compose -p wp-and-mailpit-socat exec wordpress bash

wp-and-mailpit-socat 初期設定

初期設定については、構成案 B の wp-and-mailpit と同様の手順で進めます。具体的には、wp-cli のインストール、WordPress のインストール、WP Mail SMTP プラグインのインストールと有効化を行います。

WordPress サイトを初期化した後、WP Mail SMTP の設定を確認し、更新します。

ここで、参考までに、WP Mail SMTP 設定の確認と保存について説明しておきます。

wp_mail_smtpの設定を手元に残しておきたい場合は、次のように JSON ファイルへ保存できます。

wp option get wp_mail_smtp --format=json --allow-root > wp_mail_smtp.json

保存した wp_mail_smtp.json の内容を見やすい形式で確認するには、jq コマンドが実行できる環境で以下のように実行します。WordPress コンテナ内には jq コマンドがないため、ホスト側(Ubuntu の場合)に jq をインストールする必要があります。

sudo apt install -y jq

ホスト側に jqがインストールされたら、パイプラインを経由して設定内容を確認できます。ホスト側からコマンド実行するなら、次のようにします。

docker compose -p wp-and-mailpit-socat exec wordpress \
  cat wp_mail_smtp.json | jq

実行例:

$ docker compose -p wp-and-mailpit-socat exec wordpress \
  cat wp_mail_smtp.json | jq
{
  "mail": {
    "from_email": "user001@dev.internal",
    "from_name": "DevSite",
    "mailer": "mail",
    "return_path": false,
    "from_email_force": true,
    "from_name_force": false
  },
  "smtp": {
    "autotls": true,
    "auth": true
  },
  "general": {
    "summary_report_email_disabled": false
  }
}

wp_mail_smtp 設定の更新

設定内容を確認したら、wp_mail_smtp の設定値を以下の内容で更新します。ここで重要なのは、smtp.hostlocalhostsmtp.port25 と設定する点です。これにより、WordPress は socat コンテナによって転送される localhost:25(これの転送先は mailpit:1025)へメールを送信するようになります。

cat << EOS | wp option update wp_mail_smtp --format=json --allow-root
{
  "mail": {
    "from_email": "user001@dev.internal",
    "from_name": "DevSite",
    "mailer": "smtp",
    "return_path": false,
    "from_email_force": true,
    "from_name_force": false
  },
  "smtp": {
    "autotls": false,
    "auth": false,
    "host": "localhost",
    "encryption": "none",
    "port": 25,
    "user": "",
    "pass": ""
  },
  "general":{"summary_report_email_disabled":false},
  "sendlayer":{"api_key":""},
  "smtpcom":{"api_key":"","channel":""},
  "sendinblue":{"api_key":"","domain":""},
  "elasticemail":{"api_key":""},
  "gmail":{"client_id":"","client_secret":""},
  "mailgun":{"api_key":"","domain":"","region":"US"},
  "mailjet":{"api_key":"","secret_key":""},
  "mailersend":{"api_key":"","has_pro_plan":false},
  "postmark":{"server_api_token":"","message_stream":""},
  "sendgrid":{"api_key":"","domain":""},
  "smtp2go":{"api_key":""},
  "sparkpost":{"api_key":""}
}
EOS

wp-and-mailpit-socat テストメールの送信と確認

WordPress の管理画面 http://localhost/wp-admin/admin.php?page=wp-mail-smtp-tools にアクセスし、テストメールを送信してください。

メール送信後、Mailpit の Web UI であるhttp://localhost:8025/に Web ブラウザでアクセスし、受信トレイ(Inbox)を確認してください。これで、localhost:25へのメールが正常に Mailpit へ転送されていることが確認できます。

まとめ

この記事では、Docker を利用して WordPress 開発環境にメール受信機能(Mailpit)を統合するための 3 つの異なる構成案を詳細に解説しました。

  • 構成案 A (bitnami/wordpress): WordPress の初期環境を最も手軽に構築したい場合に最適です。自動化されたセットアップにより、すぐにテーマやプラグインの開発に着手できます。
  • 構成案 B (wordpress): より標準的でカスタマイズ性の高い WordPress 環境が必要な場合に適しています。既存の WordPress サイトのバックアップをローカルで動作確認する際などに特に有用です。
  • 構成案 C (wordpress + alpine/socat): WordPress のメール送信設定が localhost に固定されており、それを変更することが難しい場合に socatを用いたメール転送で柔軟に対応できます。

これらの情報と compose.yaml の具体例を参考に、ご自身の開発目的や既存環境に合わせて最適な Docker イメージを選択し、効率的な WordPress 開発環境をみなさんが構築できるようになることを願っています。

その他

WordPress の開発をするにあたっては、次の記事で紹介している dvc-wordpress のような環境を用意すると捗ります。参考にしてください。

Discussion