<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Cloud Run on okuzawatsの日記</title><link>https://okuzawats.com/categories/cloud-run/</link><description>Recent content in Cloud Run on okuzawatsの日記</description><generator>Hugo</generator><language>ja</language><copyright>© 2019 okuzawats</copyright><lastBuildDate>Mon, 12 Oct 2026 21:10:00 +0900</lastBuildDate><atom:link href="https://okuzawats.com/categories/cloud-run/index.xml" rel="self" type="application/rss+xml"/><item><title>PhoenixプロジェクトをCloud Runにデプロイする</title><link>https://okuzawats.com/blog/deploy-phoenix-to-cloud-run/</link><pubDate>Mon, 12 Oct 2026 21:10:00 +0900</pubDate><guid>https://okuzawats.com/blog/deploy-phoenix-to-cloud-run/</guid><description>Phoenixで作ったAPIサーバーをCloud Runにデプロイした手順のメモ。勉強を兼ねた備忘のための個人的なメモであり、実務上の参考とすることは意図してません。また、ところどころ省略します。
まず、miseでElixirとErlangを入れます。
[tools] elixir = &amp;#34;1.20.4&amp;#34; erlang = &amp;#34;29.1&amp;#34; Phoenixの準備 早速Phoenixプロジェクトを作成します。今回はEctoも含めて種々の設定を無効化しておきます。
mix phx.new . --app my_awesome_app --no-ecto --no-html --no-assets --no-gettext --no-mailer mix setup Phoenixプロジェクトを作成した後、適当にヘルスチェック用のAPIを生やしておきます。
# lib/my_awesome_app_web/router.ex scope &amp;#34;/&amp;#34;, MyAwesomeAppWeb do get &amp;#34;/health&amp;#34;, HealthController, :show end # lib/my_awesome_app_web/controllers/health_controller.ex defmodule MyAwesomeAppWeb.HealthController do use MyAwesomeAppWeb, :controller def show(conn, _params) do json(conn, %{status: &amp;#34;ok&amp;#34;}) end end Phoenixは、本番環境においては force_ssl によってHTTPでのリクエストをHTTPSにリダイレクトします。ところが、Cloud Runではコンテナの前段にあるGoogle Front EndでHTTPSの通信を復号してHTTPに戻します。そのため、クライアントからHTTPSでアクセスしても、PhoenixはHTTPでリクエストを受け取ってHTTPSへリダイレクトしようとするので、リダイレクトが繰り返されてしまいます。
Google Front Endはリクエストをコンテナに転送する時に X-Forwarded-Proto: https ヘッダーを付け、HTTPSでリクエストを受けたことを示します。そこで、rewrite_on: [:x_forwarded_proto] を設定して、Google Front Endが付けた X-Forwarded-Proto を見てHTTPSのリクエストとして扱うようにします。</description></item></channel></rss>