この記事は Elixir Advent Calendar 2023 カレンダー5の18日目です。昨日は @gx3n-inue さんでした!
最新のPhoenixならこの問題は起きません
Phoenixでは、mix phx.gen.release
コマンドでリリース1に必要なファイルを生成してくれますが、--docker
フラグを指定するとDockerfileも合わせて生成してくれます。うーん、便利!
このDockerfileをそのまま使ってDockerイメージを作れば、あとはCloud Runなど適当なサービスにデプロイするだけでPhoenixアプリケーションを稼働できます
ところが、外向きにHTTPリクエストすると のようなエラーが出てしまいました...
phx.gen.releaseで生成されたDockerfileは、Dockerイメージのサイズが小さくなるような構成になっているので、あまり気を使わずにDockerfileを書いた場合に勝手に入るようなパッケージが入っていません。ログをちゃんと見ると予想がつきますが、原因は CA証明書が入っていない ことなので、ca-certificates パッケージをインストールするだけで解決します
で、なぜ最新のPhoenixだとこの問題が起きないのか...ですが、phx.gen.releaseで使われるDockerfileのテンプレートが修正されたためです。感謝感謝
ここまでの話で、何に手こずったんだろう?と思ったことでしょう。以下、言い訳という名のポエムです
実はこの問題には自分で遭遇したのではなく、インフラ構築を対応した案件で「OAuthのコールバックで500エラーが出る」という旨の連絡を受けて知りました(リリース前です)。OAuthは一応それなりに仕組みを分かっているので、あ〜外向きのHTTPリクエストがうまくいってないんだろうな〜と当たりを付けて、ログを確認しないままインフラが原因かな〜と考えちゃったんですよね。Cloud Runで稼働させていたので、第2世代で何か変わったのかな〜と難しい方向に考えてインフラ構成を試行錯誤してしまって時間を使っちゃいました。で、いろいろ考えてるうちにどんなログ出てるんだろうと思って見てみたら、これインフラの問題じゃないなって気づいたという次第でした。オハズカシイ
結論、ちゃんとログを見ろよってことです...w
明日の Elixir Advent Calendar 2023 カレンダー5の19日目は @GeekMasahiro さんです!
お楽しみに