はじめに
例によって環境はこの人です。
https://github.com/mayarin/NodejsMySQLDocker/releases/tag/20201102
またdocker-composeでハマった
主な原因はどの道docker-composeの記述です。
本当はアカウント登録時の流れを仮登録メール発信→MailHogでのメール受信→認証メール発信→本登録と言う流れにしようと思い、Node.jsからMailHogへの接続を試していました。
最初の記述が以下のとおり
mail: image: mailhog/mailhog ports: - 8025:8025
https://kakkoyakakko2.hatenablog.com/entry/2019/11/21/003000
SMTPポートを開く旨上記の参考資料にあったので、記述を修正。
mail: image: mailhog/mailhog ports: - 8025:8025 - 1025:1025
index.jsを修正。
const nodemailer = require("nodemailer"); const transporter = nodemailer.createTransport({ host: "mail", port: 1025, auth: { user: 'user', pass: 'password', } });
いざ発信を試みると以下の通り叱られる。
UnhandledPromiseRejectionWarning: Error: getaddrinfo ENOTFOUND mail
ちゃんとmailhogは http://127.0.0.1:8025/ で見えてるんですが…。
解決
Googleを堂々巡りしながら試行したところ
・サービス名が衝突してるだけではないか(←多分違う)
・networksのスコープに入ってないのではないか
と気付き、docker-composeを以下の様に修正。
mailhog: image: mailhog/mailhog ports: - 8025:8025 - 1025:1025 networks: - backend
解決。
なお本懐は別サイトを参照し、SequirizeのfindOrCreate を使う方がスマートだと思いほぼ引用で修正しました。
https://blog.capilano-fw.com/?p=5893#DB
あと残り作業
・入力バリデートをHTML5でいいので実装
・パスワードリマインダ
・ログイン中の会員情報の修正
・機能実装(今回は行先掲示板にでもします)
・herokuに公開
・気が向いたらAngularでSPAにしてみる
この辺の予定です。
https://github.com/mayarin/NodejsMySQLDocker/releases/tag/20201106