【MailHog&Docker】ローカル開発環境でメール送受信をテストする

ローカル開発環境内でのメールの送受信・内容確認がしたく調べていたところ、
MailHogを利用するのが簡単そうでした。
導入についてメモしておきます。

環境

Docker
PHP : 8.0
Apache : 2.4
MailHog : 0.2.0

導入

ファイル構成

./
 ├ app/
 ├ env/
 │ └ php-apache/
 │    ├ Dockerfile
 │   └ php.ini
 └ docker-compose.yml

docker-compose.yml

version: '3.3'
services:
    app:
        build: ./env/php-apache
        volumes:
            - ./app:/var/www/html
        ports:
            - 80:80
    mailhog:
      image: mailhog/mailhog
      ports:
        - 1025:1025
        - 8025:8025

Dockerfile

FROM php:8.0-rc-apache
RUN apt-get update
RUN apt-get install -y vim
RUN curl -sSL https://github.com/mailhog/mhsendmail/releases/download/v0.2.0/mhsendmail_linux_amd64 -o mhsendmail
RUN chmod +x mhsendmail
RUN mv mhsendmail /usr/local/bin/mhsendmail
COPY ./php.ini /usr/local/etc/php/php.ini

php.ini

[Date]
date.timezone = "Asia/Tokyo"
[mbstring]
mbstring.internal_encoding = "UTF-8"
mbstring.language = "Japanese"
[mail function]
sendmail_path = "/usr/local/bin/mhsendmail --smtp-addr=mailhog:1025"


これらの設定を行ったうえでコンテナを起動し、

mail($to, $subject, $message, $headers);

mail関数を呼び出せばメールの送信が可能になります。

送受信したメールはブラウザで8025番ポートにアクセスすると確認ができます。