132 lines
3.5 KiB
Markdown
132 lines
3.5 KiB
Markdown
# Rezepte - Docker & Modern Stack
|
|
|
|
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.
|
|
|
|
## Services & Ports
|
|
|
|
| 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 |
|
|
| phpmyadmin | admin | 8083 -> 80 | DB Verwaltung |
|
|
|
|
## Node / Modern Stack
|
|
Empfohlene Node Version: **22.12.0** (`.nvmrc`, `.tool-versions`).
|
|
|
|
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
|
|
```
|
|
|
|
## Docker Nutzung
|
|
|
|
### Standard (nur moderner Stack: DB + API + Frontend)
|
|
```bash
|
|
docker compose up -d
|
|
```
|
|
Öffnen: http://localhost:3000
|
|
|
|
### Mit phpMyAdmin
|
|
```bash
|
|
docker compose --profile admin up -d
|
|
```
|
|
Öffnen: http://localhost:8083
|
|
|
|
### 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
|
|
|
|
## Environment (.env)
|
|
Beispiel siehe `.env.example`. Wichtigste Variablen:
|
|
```
|
|
DOMAIN=example.com
|
|
MYSQL_DATABASE=rezepte
|
|
MYSQL_USER=rezepte_user
|
|
MYSQL_PASSWORD=change_this_password
|
|
MYSQL_ROOT_PASSWORD=change_this_root_password
|
|
BACKEND_PORT=3001
|
|
FRONTEND_PORT=3000
|
|
DATABASE_URL=mysql://${MYSQL_USER}:${MYSQL_PASSWORD}@mysql:3306/${MYSQL_DATABASE}
|
|
JWT_SECRET=please_change_to_secure_32_char_min
|
|
CORS_ORIGIN=http://localhost:3000
|
|
VITE_API_URL=http://localhost:3001/api
|
|
UPLOAD_PATH=/app/uploads
|
|
MAX_FILE_SIZE=5242880
|
|
```
|
|
Nicht gesetzte Variablen fallen auf sichere Defaults (oder Dummy Werte) zurück; vor Produktion immer mit echten Secrets überschreiben.
|
|
|
|
## Datenbankzugang
|
|
|
|
### Für die Anwendung:
|
|
- Host: mysql
|
|
- Database: rezepte
|
|
- User: rezepte_user
|
|
- Password: rezepte_pass
|
|
|
|
### Für phpMyAdmin:
|
|
- Server: mysql
|
|
- Username: rezepte_user
|
|
- Password: rezepte_pass
|
|
|
|
### Root-Zugang:
|
|
- Username: root
|
|
- Password: rezepte123
|
|
|
|
## Entwicklung innerhalb Docker
|
|
|
|
Status:
|
|
```bash
|
|
docker compose ps
|
|
```
|
|
|
|
Direktes DB Login (Host hat mysql Client):
|
|
```bash
|
|
mysql -h 127.0.0.1 -P 3307 -u rezepte_user -p'rezepte_pass' rezepte
|
|
```
|
|
|
|
## Datenvolumes
|
|
|
|
Die MySQL-Daten werden in einem Docker-Volume gespeichert und bleiben auch nach dem Stoppen der Container erhalten.
|
|
|
|
## Datenbankinitialisierung
|
|
|
|
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
|
|
- Erweiterte Compose Overrides: siehe `legacy/README_COMPOSE_LEGACY.md`
|
|
- Beispiel Umgebungsvariablen: `.env.example`
|
|
- CI Build Tags: Branch, Semver, `sha-<short>`, Run-ID, `latest` (nur main) |