From 2f65c4648cbded14225edb1fab0f50b2a5692764 Mon Sep 17 00:00:00 2001 From: Graham McIntire Date: Thu, 2 Apr 2026 13:01:42 -0500 Subject: [PATCH] Add /health endpoint and CHECKS file for zero-downtime deploys --- CHECKS | 5 +++++ .../controllers/health_controller.ex | 12 ++++++++++++ lib/microwaveprop_web/router.ex | 3 +++ 3 files changed, 20 insertions(+) create mode 100644 CHECKS create mode 100644 lib/microwaveprop_web/controllers/health_controller.ex diff --git a/CHECKS b/CHECKS new file mode 100644 index 00000000..3fa14dfb --- /dev/null +++ b/CHECKS @@ -0,0 +1,5 @@ +WAIT=5 +TIMEOUT=60 +ATTEMPTS=3 + +/health ok diff --git a/lib/microwaveprop_web/controllers/health_controller.ex b/lib/microwaveprop_web/controllers/health_controller.ex new file mode 100644 index 00000000..f247b033 --- /dev/null +++ b/lib/microwaveprop_web/controllers/health_controller.ex @@ -0,0 +1,12 @@ +defmodule MicrowavepropWeb.HealthController do + use MicrowavepropWeb, :controller + + def check(conn, _params) do + # Verify DB is reachable + Ecto.Adapters.SQL.query!(Microwaveprop.Repo, "SELECT 1") + + conn + |> put_resp_content_type("text/plain") + |> send_resp(200, "ok") + end +end diff --git a/lib/microwaveprop_web/router.ex b/lib/microwaveprop_web/router.ex index ec7d30fe..6bd76b4a 100644 --- a/lib/microwaveprop_web/router.ex +++ b/lib/microwaveprop_web/router.ex @@ -14,6 +14,9 @@ defmodule MicrowavepropWeb.Router do plug :accepts, ["json"] end + # Health check — no pipeline, minimal overhead + get "/health", MicrowavepropWeb.HealthController, :check + scope "/", MicrowavepropWeb do pipe_through :browser