Input-Text geht, CORS behoben

This commit is contained in:
2025-09-24 21:10:11 +00:00
parent ef4ab9e800
commit a9428fee94
23 changed files with 257 additions and 71 deletions

115
README.md
View File

@@ -1,28 +1,83 @@
# Rezepte - Docker Setup
# Rezepte - Docker & Modern Stack
Eine dockerisierte Version der Rezepte-Verwaltungsanwendung mit PHP, MySQL und phpMyAdmin.
Dieses Repository enthält zwei Welten: den modernen Node.js / React Stack sowie die historische PHP Legacy-App. Über Docker Compose Profile kannst du gezielt nur die benötigten Teile starten.
## Komponenten
## Services & Ports
- **PHP-App**: Rezepte-Anwendung (Port 8082)
- **MySQL**: Datenbankserver (Port 3307)
- **phpMyAdmin**: Datenbankadministration (Port 8083)
| Service | Profil | Port Host -> Container | Beschreibung |
|--------------|-----------|------------------------|--------------|
| mysql | default | 3307 -> 3306 | MySQL 8 Datenbank |
| backend | default | 3001 -> 3001 | Node.js API (Express + Prisma) |
| frontend | default | 3000 -> 80 | React Build via nginx |
| php-app | legacy | 8082 -> 80 | Altes PHP Frontend |
| phpmyadmin | admin | 8083 -> 80 | DB Verwaltung |
## Schnellstart
## Node / Modern Stack
Empfohlene Node Version: **22.12.0** (`.nvmrc`, `.tool-versions`).
1. **Docker starten:**
```bash
docker-compose up -d
```
Lokal ohne Docker (Entwicklung Hot Reload):
```bash
nvm use
cd backend && npm install && npm run dev # startet API auf :3001
cd ../frontend && npm install && npm run dev # startet Vite auf :5173
```
2. **Anwendung öffnen:**
- Rezepte-App: http://localhost:8082
- phpMyAdmin: http://localhost:8083
## Docker Nutzung
3. **Container stoppen:**
```bash
docker-compose down
```
### Standard (nur moderner Stack: DB + API + Frontend)
```bash
docker compose up -d
```
Öffnen: http://localhost:3000
### Mit Legacy PHP zusätzlich
```bash
docker compose --profile legacy up -d
```
Öffnen: http://localhost:8082
### Mit phpMyAdmin zusätzlich
```bash
docker compose --profile admin up -d
```
Öffnen: http://localhost:8083
### Beide Zusatz-Profile
```bash
docker compose --profile legacy --profile admin up -d
```
### Alles stoppen
```bash
docker compose down
```
### Neu bauen (z.B. nach Codeänderungen Backend/Frontend)
```bash
docker compose build backend frontend
docker compose up -d
```
### Nur Backend neu bauen
```bash
docker compose build backend && docker compose up -d backend
```
### Logs
```bash
docker compose logs -f backend
docker compose logs -f frontend
docker compose logs -f mysql
```
## CORS Hinweis
Aktuell ist `CORS_ORIGIN="*"` (Testphase). Für Produktion einschränken, z.B.:
```yaml
CORS_ORIGIN: http://esprimo:3000,http://localhost:3000
```
Danach Backend neu bauen.
## Datenbankzugang
## Datenbankzugang
@@ -41,23 +96,16 @@ Eine dockerisierte Version der Rezepte-Verwaltungsanwendung mit PHP, MySQL und p
- Username: root
- Password: rezepte123
## Entwicklung
## Entwicklung innerhalb Docker
### Container neu bauen:
Status:
```bash
docker-compose build --no-cache
docker-compose up -d
docker compose ps
```
### Logs anzeigen:
Direktes DB Login (Host hat mysql Client):
```bash
docker-compose logs -f php-app
docker-compose logs -f mysql
```
### Container Status:
```bash
docker-compose ps
mysql -h 127.0.0.1 -P 3307 -u rezepte_user -p'rezepte_pass' rezepte
```
## Datenvolumes
@@ -66,4 +114,9 @@ Die MySQL-Daten werden in einem Docker-Volume gespeichert und bleiben auch nach
## Datenbankinitialisierung
Beim ersten Start werden automatisch alle Tabellen und Daten aus den SQL-Dateien importiert.
Beim ersten Start importiert MySQL automatisch SQL-Skripte aus `sql-init/`.
## Weiterführend
- Moderne Stack Doku: `NODEJS_README.md`
- Traefik / Registry Deploy: siehe entsprechende `*_SETUP.md` Dateien
- Sicherheitshärtung TODO: CORS einschränken, CSP Header, chown Migration verbessern