# Health-Endpoint für Docker-Compose Healthcheck ## Änderungen ### 1. curl im Dockerfile installieren In `Dockerfile` Zeile 67 `curl` zur apt-get Liste hinzufügen: ```dockerfile apt-get install -y libstdc++6 openssl libncurses5 locales ca-certificates curl \ ``` ### 2. Health-Controller erstellen Neue Datei `lib/mv_web/controllers/health_controller.ex`: ```elixir defmodule MvWeb.HealthController do use MvWeb, :controller def index(conn, _params) do case Ecto.Adapters.SQL.query(Mv.Repo, "SELECT 1", []) do {:ok, _} -> json(conn, %{status: "healthy"}) {:error, _} -> conn |> put_status(503) |> json(%{status: "unhealthy", reason: "database_unavailable"}) end end end ``` ### 3. Route im Router hinzufügen In `lib/mv_web/router.ex` nach der `api` Pipeline (Zeile ~23) einen neuen Scope einfügen: ```elixir # Health check endpoint - no authentication required scope "/", MvWeb do pipe_through :api get "/health", HealthController, :index end ``` ### 4. Healthcheck in docker-compose.prod.yml Im `app`-Service (nach Zeile 5) den Healthcheck-Block hinzufügen: ```yaml healthcheck: test: ["CMD", "curl", "-f", "http://localhost:4001/health"] interval: 30s timeout: 10s retries: 3 start_period: 60s ``` ### To-dos - [ ] curl zu apt-get im Dockerfile hinzufügen - [ ] HealthController mit DB-Check erstellen - [ ] Health-Route im Router registrieren - [ ] Healthcheck-Block in docker-compose.prod.yml einfügen