4.0 KiB
4.0 KiB
Rezepte Klaus - Docker Deployment
Dieses Projekt kann komplett über Docker containerisiert betrieben werden.
Voraussetzungen
- Docker Desktop installiert und gestartet
- mindestens 4GB freier RAM
- mindestens 2GB freier Festplattenspeicher
Quick Start
# 1. Repository klonen/herunterladen
git clone <repository-url>
cd Rezepte_Klaus
# 2. Docker Deployment starten
./docker-deploy.sh
# 3. Warten bis alle Services bereit sind
# Das Script zeigt den Fortschritt an
# 4. Services nutzen:
# - Frontend: http://localhost:3000
# - Backend API: http://localhost:3001
# - phpMyAdmin: http://localhost:8080
# - Legacy PHP: http://localhost:8090 (optional)
Services stoppen
./docker-stop.sh
Architektur
Das Docker-Setup besteht aus folgenden Services:
Frontend (Port 3000)
- React/TypeScript Anwendung
- Nginx Web Server
- Optimiert für Produktion mit Caching
Backend (Port 3001)
- Node.js/Express API
- Prisma ORM für Database
- Multer für File Uploads
- Health Checks
Database (Port 3306)
- MySQL 8.0
- Persistente Datenspeicherung
- Automatische Health Checks
phpMyAdmin (Port 8080)
- Web-Interface für MySQL
- Benutzer: recipes_user
- Passwort: recipes_password_2024
Legacy PHP (Port 8090) - Optional
- Bestehende PHP-Anwendung
- Für Migration und Kompatibilität
Volumes & Persistenz
docker-data/
├── mysql/ # Database Dateien
├── uploads/ # Hochgeladene Bilder
└── logs/ # Application Logs
Environment Configuration
Die Konfiguration erfolgt über .env Dateien:
.env.docker- Produktion (Docker).env.development- Entwicklung (lokal)
Debugging
# Container Logs anzeigen
docker-compose -f docker-compose.modern.yml logs -f
# Specific Service Logs
docker-compose -f docker-compose.modern.yml logs -f backend
docker-compose -f docker-compose.modern.yml logs -f frontend
# In Container einloggen
docker-compose -f docker-compose.modern.yml exec backend bash
docker-compose -f docker-compose.modern.yml exec frontend sh
# Container Status prüfen
docker-compose -f docker-compose.modern.yml ps
# Services neustarten
docker-compose -f docker-compose.modern.yml restart backend
Development
Für lokale Entwicklung:
# Development Environment nutzen
cp .env.development .env
# Backend starten
cd nodejs-version/backend
npm install
npm run dev
# Frontend starten
cd frontend
npm install
npm run dev
Migration von Legacy System
Das Docker-Setup migriert automatisch:
- Bestehende Uploads aus
upload/nachdocker-data/uploads/ - Database Schema über Prisma Migrations
- Legacy PHP bleibt parallel verfügbar
Security Features
- Non-root Container User
- Security Headers (CSP, HSTS, etc.)
- File Upload Validation
- Network Isolation
- Health Checks für alle Services
Performance Optimization
- Multi-stage Docker Builds
- Nginx Gzip Compression
- Static Asset Caching
- Database Connection Pooling
- Upload Size Limits
Troubleshooting
Port bereits belegt
# Prüfe welche Ports belegt sind
lsof -i :3000
lsof -i :3001
# Ändere Ports in .env wenn nötig
FRONTEND_PORT=3010
BACKEND_PORT=3011
Upload Probleme
# Prüfe Upload-Berechtigungen
ls -la docker-data/uploads/
# Upload Ordner neu erstellen
docker-compose -f docker-compose.modern.yml exec backend mkdir -p /app/uploads
Database Connection
# MySQL Health Check
docker-compose -f docker-compose.modern.yml exec mysql mysqladmin ping
# Database Reset (⚠️ VORSICHT - löscht alle Daten)
docker-compose -f docker-compose.modern.yml down -v
Backup & Restore
Database Backup
docker-compose -f docker-compose.modern.yml exec mysql mysqldump -u recipes_user -p rezepte_klaus > backup.sql
Upload Backup
tar -czf uploads-backup.tar.gz docker-data/uploads/
Restore
# Database
docker-compose -f docker-compose.modern.yml exec -T mysql mysql -u recipes_user -p rezepte_klaus < backup.sql
# Uploads
tar -xzf uploads-backup.tar.gz