Docker-Setup: App-Image (standalone), PostgreSQL-Dienst mit Auto-Import, Dev-Profil

This commit is contained in:
2026-07-17 18:26:36 +02:00
parent 7cac8cd4fc
commit 8dd6ba236e
5 changed files with 149 additions and 7 deletions
+32 -7
View File
@@ -38,14 +38,24 @@ scripts/ Hilfsskripte (DB-Migration, lokaler Sync)
## Entwicklung
Voraussetzung in beiden Varianten: `.env.local` mit den Werten aus
`.env.example` (liegt lokal bereits vor und ist per `.gitignore` vom
Repo ausgeschlossen).
**Variante A – Docker (nichts vorinstallieren außer Docker):**
```bash
docker compose --env-file .env.local --profile dev up dev
# http://localhost:3000 (Hot-Reload, Quellcode wird gemountet)
```
**Variante B – lokal installiertes Node.js:**
```bash
npm install
npm run dev # http://localhost:3000
```
Voraussetzung: `.env.local` mit den Werten aus `.env.example`
(liegt lokal bereits vor und ist per `.gitignore` vom Repo ausgeschlossen).
## Umgebungsvariablen (Live-Betrieb)
Beim Webserver/Hoster müssen genau diese drei Variablen hinterlegt werden
@@ -57,7 +67,16 @@ Beim Webserver/Hoster müssen genau diese drei Variablen hinterlegt werden
| `NEXT_PUBLIC_SUPABASE_ANON_KEY` | Öffentlicher anon-Key (RLS schützt die Daten) | nein |
| `SUPABASE_SERVICE_ROLE_KEY` | Service-Role-Key für die Benutzerverwaltung | **ja – niemals im Browser/Repo!** |
Build & Start auf dem Server:
Build & Start auf dem Server – **mit Docker** (empfohlen, Node.js und
PostgreSQL müssen nicht installiert sein):
```bash
docker compose --env-file .env.local up -d --build
# App: Port 3000 (hinter Reverse-Proxy mit HTTPS betreiben)
# Lokale DB-Kopie: Port 5432 (Dienst "db", optional)
```
Oder klassisch ohne Docker:
```bash
npm ci
@@ -97,9 +116,15 @@ Sicherheitsmodell (Row Level Security):
### Lokale PostgreSQL-Kopie
Auf dem Entwicklungsrechner läuft PostgreSQL 17 mit der Datenbank
`speisekarte` (Kopie von Schema + Daten aus Supabase, inkl. Minimal-Stubs
für `auth`/`storage`). Neu aufbauen bzw. aktualisieren:
Die Datenbank `speisekarte` (Kopie von Schema + Daten aus Supabase, inkl.
Minimal-Stubs für `auth`/`storage`) gibt es in zwei Varianten:
**Per Docker:** Der Dienst `db` aus `docker-compose.yml` spielt die
Skripte aus `supabase/local/` beim ersten Start automatisch ein
(PostgreSQL 17, Port 5432, Passwort über `LOCAL_PG_PASSWORD`).
**Nativ:** Auf dem Entwicklungsrechner läuft PostgreSQL 17 mit derselben
Datenbank. Neu aufbauen bzw. aktualisieren:
```powershell
$env:SUPABASE_DB_PASSWORD = "<Supabase-DB-Passwort>"