a9428fee947f449c3e930d26ffc7ba9dd37058ec
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 |
| php-app | legacy | 8082 -> 80 | Altes PHP Frontend |
| phpmyadmin | admin | 8083 -> 80 | DB Verwaltung |
Node / Modern Stack
Empfohlene Node Version: 22.12.0 (.nvmrc, .tool-versions).
Lokal ohne Docker (Entwicklung Hot Reload):
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)
docker compose up -d
Öffnen: http://localhost:3000
Mit Legacy PHP zusätzlich
docker compose --profile legacy up -d
Öffnen: http://localhost:8082
Mit phpMyAdmin zusätzlich
docker compose --profile admin up -d
Öffnen: http://localhost:8083
Beide Zusatz-Profile
docker compose --profile legacy --profile admin up -d
Alles stoppen
docker compose down
Neu bauen (z.B. nach Codeänderungen Backend/Frontend)
docker compose build backend frontend
docker compose up -d
Nur Backend neu bauen
docker compose build backend && docker compose up -d backend
Logs
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.:
CORS_ORIGIN: http://esprimo:3000,http://localhost:3000
Danach Backend neu bauen.
Datenbankzugang
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:
docker compose ps
Direktes DB Login (Host hat mysql Client):
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.mdDateien - Sicherheitshärtung TODO: CORS einschränken, CSP Header, chown Migration verbessern
Description
Languages
TypeScript
43.5%
Shell
20.9%
CSS
16.6%
PHP
15.8%
Dockerfile
2.7%
Other
0.5%