2021/12/08
Laravel ローカル環境構築(Docker)シリーズです。
前回は Docker に Node.js を入れて Laravel の認証機能(Auth)を実装しました。
ただ、このままだとメールの設定を行っていないので、認証機能にあるパスワードリマインダのメールが届きません。
今回は、Docker に MailCatcher というソフトを入れてメール設定を行い、パスワードリマインダをローカル環境で使ってみたいと思います。
MailCatcher を使うと、Laravel から送信したメールをブラウザで確認することができます。
今回のゴール
現状では認証機能にあるパスワードリマインダは使えません。
Docker に MailCatcher(簡易メールサーバ)を入れて、ブラウザで確認できるようにします。
手順
Docker に MailCatcher を追加
前回、作成した docker-compose.yml に MailCatcher のイメージを記述します。
# ----------------------------------
# phpMyAdminを動かすコンテナ
# ----------------------------------
:
# ----------------------------------
# MailCatcherを動かすコンテナ
# ----------------------------------
mailcatcher:
image: schickling/mailcatcher
ports:
- 1080:1080
docker-compose.yml の変更を反映させるために docker-compose up -d
コマンドを実行させます。
$ docker-compose up -d
コマンド実行後、以下のような画面になればOKです。
にアクセスすると、MailCatcher のメール送信トレイが表示されます。
.envファイルの編集
「MAIL_HOST」 と 「MAIL_PORT」 の二つを以下のように修正します。
「MAIL_USERNAME」「MAIL_PASSWORD」「MAIL_ENCRYPTION」は null のままで OK です。
:
MAIL_DRIVER=smtp
# MailCatcherコンテナのサービス名を指定します
MAIL_HOST=mailcatcher
# MailCatcherへの送信ポートは1025番です
MAIL_PORT=1025
# ユーザ名や暗号化設定はnullのまま
MAIL_USERNAME=null
MAIL_PASSWORD=null
MAIL_ENCRYPTION=null
# 任意
MAIL_FROM_ADDRESS=mailcatcher@example.com
MAIL_FROM_NAME="${APP_NAME}"
:
php artisan config:cache
コマンド(キャッシュの再構築)を実行させないと反映されません。もし、上手くいかなかったら、Laravel のコンテナに入ってキャッシュの再構築をしてみてもいいかもしれません。
動作確認
(1) http://localhost/register にアクセスして、ユーザー登録をします。
(2) ユーザー登録をしたら、一旦ログアウトし、http://localhost/login にアクセスします。
「Forgot Your Password」のリンクを押します。
(3) ユーザー登録時のメールアドレスを入力して、パスワードリセットのリクエストを送信します。
(4) パスワード再設定メールが Laravel から MailCatcher に送信されるので、http://localhost:1080 を開き、メール内のパスワード再設定ボタンを押します。
(5) 新しいパスワードを入力します。
これで、パスワードリセットの完了です。
以上です。
Udemyを使ったLaravel学習方法
仕事で Laravel を使っています。気づいたことや新しい発見など情報を発信していきます。問い合わせはこちら。