# Cazubu - Pflanzenverwaltung Cazubu ist eine Webanwendung zur Verwaltung von Pflanzen, Inventar, Samen und Sensoren. ## Projektstruktur Das Projekt ist so aufgebaut, dass der Quellcode vom Deployment-Setup getrennt ist: - **`src/`**: Enthält den gesamten PHP-Quellcode, Assets und Frontend-Ressourcen. - **`Dockerfile`**: Definition des Docker-Images. - **`.gitea/workflows`**: CI/CD-Konfiguration. ## Installation & Betrieb ### Voraussetzungen - Docker Engine - Eine laufende MySQL/MariaDB Datenbank ### Docker Build & Run 1. **Image bauen:** ```bash docker build -t cazubu . ``` 2. **Container starten (Produktiv):** Für den produktiven Einsatz sollten Uploads (Bilder) persistent gespeichert werden. Dafür binden wir ein Volume an `/var/www/html/uploads`. ```bash docker run -d \ -p 8080:80 \ -e DB_SERVER="deine-db-ip" \ -e DB_USERNAME="cazubu" \ -e DB_PASSWORD="dein-sicheres-passwort" \ -e DB_NAME="cazubu" \ -v cazubu_uploads:/var/www/html/uploads \ --name cazubu-app \ --restart unless-stopped \ cazubu ``` ### Umgebungsvariablen Die Anwendung wird über Umgebungsvariablen konfiguriert. Wenn diese nicht gesetzt sind, werden interne Fallbacks (für Entwicklung) genutzt. | Variable | Beschreibung | Standard (Dev) | |----------|--------------|----------------| | `DB_SERVER` | IP oder Hostname des Datenbankservers | `172.30.242.130` | | `DB_USERNAME` | Datenbank-Benutzer | `cazubu` | | `DB_PASSWORD` | Datenbank-Passwort | (interner Standard) | | `DB_NAME` | Name der Datenbank | `cazubu` | ### Persistente Daten User-Uploads (Pflanzenbilder) werden im Container unter `/var/www/html/uploads` gespeichert. Um Datenverlust beim Neustart/Update des Containers zu vermeiden, **muss** dieses Verzeichnis als Volume gemountet werden (siehe oben). ## Entwicklung Um lokal zu entwickeln, ohne jedes Mal das Image neu zu bauen, kann der `src`-Ordner direkt in den Container gemountet werden: ```bash docker run -d \ -p 8080:80 \ -v $(pwd)/src:/var/www/html \ --name cazubu-dev \ cazubu ``` ## Changelog ### 2025-12-07 - Refactoring & Dockerisierung - **Struktur:** Quellcode nach `src/` verschoben für saubereres Root-Verzeichnis. - **Docker:** `Dockerfile` angepasst (kopiert nun `src/`). - **Doku:** `README.md` erweitert um detaillierte Deployment-Infos und Volume-Handling. - **CI/CD:** Pipeline für automatischen Build & Push eingerichtet.