2025-09-25 14:08:45 +00:00
2025-09-24 21:10:11 +00:00
2025-09-24 21:33:00 +00:00
2025-09-20 16:01:52 +02:00
2025-09-22 18:12:22 +00:00
2025-09-22 16:35:59 +02:00
2025-09-22 16:35:59 +02:00
2025-09-23 11:53:40 +00:00
2025-09-23 11:53:40 +00:00
2025-09-23 11:53:40 +00:00
2025-09-25 14:08:45 +00:00
2025-09-23 11:53:40 +00:00
2025-09-23 11:53:40 +00:00
2025-09-24 19:29:16 +00:00
2025-09-24 21:10:11 +00:00
2025-09-24 21:10:11 +00:00
2025-09-23 11:53:40 +00:00
2025-09-23 11:53:40 +00:00
2025-09-23 11:53:40 +00:00
2025-09-22 19:41:40 +02:00
2025-09-23 11:53:40 +00:00
2025-09-23 11:53:40 +00:00
2025-09-23 11:53:40 +00:00
2025-09-23 11:53:40 +00:00
2025-09-23 11:53:40 +00:00
2025-09-23 11:53:40 +00:00
2025-09-20 16:01:52 +02:00
2025-09-20 16:01:52 +02:00
2025-09-20 16:01:52 +02:00
2025-09-20 16:01:52 +02:00
2025-09-20 16:01:52 +02:00
2025-09-23 11:53:40 +00:00
2025-09-24 21:10:11 +00:00
2025-09-23 11:53:40 +00:00
2025-09-25 14:08:45 +00:00
2025-09-23 11:53:40 +00:00
2025-09-20 16:01:52 +02:00
2025-09-20 16:01:52 +02:00
2025-09-23 11:53:40 +00:00
2025-09-23 11:53:40 +00:00
2025-09-23 11:53:40 +00:00
2025-09-22 18:12:22 +00:00
2025-09-20 16:01:52 +02:00

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

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 phpMyAdmin

docker compose --profile admin up -d

Öffnen: http://localhost:8083

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

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:

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)
Description
Unsere Rezepte in einer DB verwaltet (Original von Klaus Glashoff)
Readme 26 MiB
Languages
TypeScript 43.5%
Shell 20.9%
CSS 16.6%
PHP 15.8%
Dockerfile 2.7%
Other 0.5%