From 56662c0775748318039cea9e3897f0b8f667ab4e Mon Sep 17 00:00:00 2001 From: Maximilian Stubhan Date: Fri, 7 Aug 2026 08:23:30 +0200 Subject: [PATCH] Describe what is actually deployed, now that the target is a Linux server MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The revert restored three statements that stopped being true earlier today. "Nicht containerisiert: Supabase (Datenbank + Auth)" — authentication is no longer Supabase, it is Entra ID with an Auth.js session cookie, and the database is any PostgreSQL 15 or later reached through DATABASE_URL. Supabase is one option among several now, not the architecture. The CI/CD note told the reader to pass --build-arg values for NEXT_PUBLIC_*. Those variables no longer exist and the Dockerfile stopped taking build arguments today. Following it would produce a puzzling failure; the point now is the opposite one, that no build arguments are needed at all and the same image runs everywhere. Co-Authored-By: Claude Opus 5 --- DEPLOYMENT.md | 28 ++++++++++++++++------------ 1 file changed, 16 insertions(+), 12 deletions(-) diff --git a/DEPLOYMENT.md b/DEPLOYMENT.md index efb76d2..c43b519 100644 --- a/DEPLOYMENT.md +++ b/DEPLOYMENT.md @@ -1,17 +1,19 @@ # Deployment mit Docker -Dieser Guide beschreibt, wie die App (bisher auf Vercel deployed, siehe -`vercel.json`) stattdessen als Docker-Container auf einem beliebigen Server -läuft. +Dieser Guide beschreibt, wie die App als Docker-Container auf einem eigenen +Linux-Server läuft. ## Was wird containerisiert – und was nicht - **Containerisiert:** nur die Next.js-App selbst (`Dockerfile`). -- **Nicht containerisiert:** Supabase (Datenbank + Auth). Die App verbindet - sich per URL/Key zu einem bestehenden Supabase-Projekt (Cloud oder - selbst gehostet) – das bleibt unverändert. `supabase/` in diesem Repo ist - nur die lokale Dev-/Migrations-Umgebung (`supabase start`), kein Teil des - Deployments. +- **Nicht containerisiert:** die Datenbank. Die App verbindet sich über + `DATABASE_URL` zu einem beliebigen PostgreSQL ab 15 — heute ein + Supabase-Projekt, genauso möglich sind Azure Flexible Server, RDS, + Cloud SQL oder eigenes Blech. `supabase/` in diesem Repo ist die + Migrations- und Entwicklungsumgebung, kein Teil des Deployments. +- **Ebenfalls nicht containerisiert:** die Anmeldung. Sie läuft über + Microsoft Entra ID; die App hält nur das Sitzungscookie (Auth.js). Es gibt + keinen Anmeldedienst, der mit ausgerollt werden müsste. - **Ersetzt:** der Vercel-Cron-Job aus `vercel.json` (täglich 03:00 Uhr, ruft `/api/cron/apply-pending-changes` auf, um fällige Versetzungen/ Beförderungen/Karenz/Reorg-Änderungen zu übernehmen). Da es außerhalb von @@ -83,11 +85,13 @@ docker compose up -d --build ``` Alternative für CI/CD (Image einmal bauen, überall pullen): Image in einer -Registry (GHCR, Docker Hub, …) bauen und pushen, auf dem Server nur +Registry bauen und pushen, auf dem Server nur `docker compose pull && docker compose up -d` ausführen. Dafür in -`docker-compose.yml` zusätzlich `image: /:` setzen und -den Build in der CI-Pipeline mit den `--build-arg`-Werten für -`NEXT_PUBLIC_*` laufen lassen. +`docker-compose.yml` zusätzlich `image: /:` setzen. + +Build-Argumente braucht es dabei **keine**: das Abbild enthält keine +umgebungsabhängigen Werte mehr, alles kommt zur Laufzeit aus `.env`. +Dasselbe Abbild läuft damit in Test und Produktion. ## 4. Reverse Proxy + HTTPS