Docker mit traefik und portainer
This commit is contained in:
156
PHPMYADMIN_SETUP.md
Normal file
156
PHPMYADMIN_SETUP.md
Normal file
@@ -0,0 +1,156 @@
|
||||
# phpMyAdmin Integration - Rezepte Klaus
|
||||
|
||||
## 🗄️ Datenbank-Verwaltung über Web-Interface
|
||||
|
||||
phpMyAdmin ist jetzt in das Traefik-Setup integriert und ermöglicht eine benutzerfreundliche Verwaltung der MySQL-Datenbank über das Web.
|
||||
|
||||
## 🌐 Zugriff
|
||||
|
||||
### Produktions-Deployment (mit Traefik):
|
||||
```
|
||||
https://phpmyadmin.your-domain.com
|
||||
```
|
||||
|
||||
### Login-Daten:
|
||||
- **Server**: `mysql` (automatisch konfiguriert)
|
||||
- **Benutzername**: `root`
|
||||
- **Passwort**: Ihr `MYSQL_ROOT_PASSWORD` aus der `.env.production`
|
||||
|
||||
## 🔧 Konfiguration
|
||||
|
||||
### 1. Traefik Labels:
|
||||
```yaml
|
||||
labels:
|
||||
- "traefik.enable=true"
|
||||
- "traefik.http.routers.phpmyadmin.rule=Host(`phpmyadmin.${DOMAIN}`)"
|
||||
- "traefik.http.routers.phpmyadmin.entrypoints=websecure"
|
||||
- "traefik.http.routers.phpmyadmin.tls.certresolver=letsencrypt"
|
||||
- "traefik.http.services.phpmyadmin.loadbalancer.server.port=80"
|
||||
```
|
||||
|
||||
### 2. Umgebungsvariablen:
|
||||
```yaml
|
||||
environment:
|
||||
- PMA_HOST=mysql
|
||||
- PMA_PORT=3306
|
||||
- PMA_USER=root
|
||||
- PMA_PASSWORD=${MYSQL_ROOT_PASSWORD}
|
||||
- UPLOAD_LIMIT=2G
|
||||
- MEMORY_LIMIT=2G
|
||||
- MAX_EXECUTION_TIME=0
|
||||
```
|
||||
|
||||
## 🔒 Sicherheit
|
||||
|
||||
### Zusätzliche Authentifizierung (Optional):
|
||||
Um eine zusätzliche Sicherheitsebene hinzuzufügen, können Sie Basic Auth aktivieren:
|
||||
|
||||
1. **In der docker-compose.traefik.yml** die Zeile auskommentieren:
|
||||
```yaml
|
||||
# - "traefik.http.routers.phpmyadmin.middlewares=auth"
|
||||
```
|
||||
|
||||
2. **Eigenes Passwort generieren**:
|
||||
```bash
|
||||
# Passwort "secure123" hashen (ändern Sie das Passwort!)
|
||||
echo $(htpasswd -nbB admin "secure123") | sed -e s/\\$/\\$\\$/g
|
||||
```
|
||||
|
||||
3. **In Traefik-Labels verwenden**:
|
||||
```yaml
|
||||
- "traefik.http.middlewares.auth.basicauth.users=admin:$$2y$$10$$..."
|
||||
```
|
||||
|
||||
## 🚀 Features
|
||||
|
||||
### Optimiert für große Datenbanken:
|
||||
- **Upload Limit**: 2GB für große SQL-Imports
|
||||
- **Memory Limit**: 2GB für komplexe Operationen
|
||||
- **Execution Time**: Unbegrenzt für lange Abfragen
|
||||
|
||||
### Funktionen:
|
||||
- ✅ SQL-Abfragen ausführen
|
||||
- ✅ Datenbank-Struktur verwalten
|
||||
- ✅ Daten importieren/exportieren
|
||||
- ✅ Rezepte-Daten durchsuchen
|
||||
- ✅ Backups erstellen
|
||||
- ✅ Performance-Monitoring
|
||||
|
||||
## 📊 Nützliche Abfragen
|
||||
|
||||
### Rezepte-Übersicht:
|
||||
```sql
|
||||
SELECT r.Rezept_Nr, r.Titel, r.Datum, COUNT(z.ID) as Schritte
|
||||
FROM Rezepte r
|
||||
LEFT JOIN Zubereitung z ON r.Rezept_Nr = z.Rezept_Nr
|
||||
GROUP BY r.Rezept_Nr
|
||||
ORDER BY r.Datum DESC;
|
||||
```
|
||||
|
||||
### Zutaten-Statistik:
|
||||
```sql
|
||||
SELECT z.Zutat, COUNT(*) as Verwendung
|
||||
FROM ingredients z
|
||||
GROUP BY z.Zutat
|
||||
ORDER BY Verwendung DESC
|
||||
LIMIT 20;
|
||||
```
|
||||
|
||||
### Bilder pro Rezept:
|
||||
```sql
|
||||
SELECT r.Titel, COUNT(rb.id) as Anzahl_Bilder
|
||||
FROM Rezepte r
|
||||
LEFT JOIN rezepte_bilder rb ON r.Rezept_Nr = rb.rezept_nr
|
||||
GROUP BY r.Rezept_Nr
|
||||
ORDER BY Anzahl_Bilder DESC;
|
||||
```
|
||||
|
||||
## 🛠️ Deployment
|
||||
|
||||
### Mit Traefik starten:
|
||||
```bash
|
||||
./deploy-traefik.sh
|
||||
```
|
||||
|
||||
### Einzeln testen:
|
||||
```bash
|
||||
docker-compose -f docker-compose.traefik.yml up phpmyadmin -d
|
||||
```
|
||||
|
||||
## 🔧 Troubleshooting
|
||||
|
||||
### Verbindungsprobleme:
|
||||
1. **MySQL-Container prüfen**:
|
||||
```bash
|
||||
docker-compose -f docker-compose.traefik.yml logs mysql
|
||||
```
|
||||
|
||||
2. **phpMyAdmin-Logs**:
|
||||
```bash
|
||||
docker-compose -f docker-compose.traefik.yml logs phpmyadmin
|
||||
```
|
||||
|
||||
3. **Netzwerk-Konnektivität**:
|
||||
```bash
|
||||
docker exec -it rezepte-phpmyadmin ping mysql
|
||||
```
|
||||
|
||||
### Häufige Probleme:
|
||||
- **"Cannot connect to MySQL"**: MySQL-Container noch nicht bereit
|
||||
- **SSL-Zertifikat fehlt**: Traefik benötigt Zeit für Let's Encrypt
|
||||
- **Login fehlgeschlagen**: MYSQL_ROOT_PASSWORD in .env.production prüfen
|
||||
|
||||
## 📁 Zusammenhang mit Rezepte-System
|
||||
|
||||
### Wichtige Tabellen:
|
||||
- **Rezepte**: Haupt-Rezeptdaten
|
||||
- **ingredients**: Zutaten und Mengen
|
||||
- **Zubereitung**: Zubereitungsschritte
|
||||
- **rezepte_bilder**: Bild-Metadaten
|
||||
|
||||
### Datenbank-Schema verstehen:
|
||||
phpMyAdmin hilft dabei, die Beziehungen zwischen den Tabellen zu visualisieren und komplexe Abfragen für Reports zu erstellen.
|
||||
|
||||
---
|
||||
|
||||
**🎯 Ziel**: Professionelle Datenbank-Verwaltung mit sicherer Web-Oberfläche für das Rezepte-Management-System.
|
||||
Reference in New Issue
Block a user