Files
Rezepte/README.md

3.2 KiB

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.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)