From 5880593831ab13d374c398fb27930ba563c34702 Mon Sep 17 00:00:00 2001 From: Gemini Bot Date: Sun, 7 Dec 2025 17:12:22 +0000 Subject: [PATCH] Refactor: Move app to src/, update Dockerfile and detailed README --- Dockerfile | 2 +- README.md | 65 +++++++++++------- ajax_handler.php => src/ajax_handler.php | 0 api.php => src/api.php | 0 {assets => src/assets}/dummy_plant.png | Bin {css => src/css}/style.css | 0 {css => src/css}/style.css.0629Uhr | 0 {css => src/css}/style.css.1413Uhr | 0 {css => src/css}/style.css.1908Uhr | 0 {includes => src/includes}/auth_check.php | 0 {includes => src/includes}/db_connect.php | 0 {includes => src/includes}/footer.php | 0 {includes => src/includes}/footer.php.1345Uhr | 0 {includes => src/includes}/header.php | 0 {includes => src/includes}/header.php.1343Uhr | 0 {includes => src/includes}/header.php.1357Uhr | 0 index.php => src/index.php | 0 inventory.php => src/inventory.php | 0 {js => src/js}/main.js | 0 {js => src/js}/main.js.0629Uhr | 0 {js => src/js}/main.js.1310Uhr | 0 {js => src/js}/main.js.1346Uhr | 0 {js => src/js}/main.js.1357Uhr | 0 login.php => src/login.php | 0 logo.png => src/logo.png | Bin logout.php => src/logout.php | 0 plant_detail.php => src/plant_detail.php | 0 plants.php => src/plants.php | 0 profile.php => src/profile.php | 0 register.php => src/register.php | 0 seeds.php => src/seeds.php | 0 sensors.php => src/sensors.php | 0 .../plant_1_685d315173aef1.94747216.png | Bin wallpaper.png => src/wallpaper.png | Bin 34 files changed, 42 insertions(+), 25 deletions(-) rename ajax_handler.php => src/ajax_handler.php (100%) rename api.php => src/api.php (100%) rename {assets => src/assets}/dummy_plant.png (100%) rename {css => src/css}/style.css (100%) rename {css => src/css}/style.css.0629Uhr (100%) rename {css => src/css}/style.css.1413Uhr (100%) rename {css => src/css}/style.css.1908Uhr (100%) rename {includes => src/includes}/auth_check.php (100%) rename {includes => src/includes}/db_connect.php (100%) rename {includes => src/includes}/footer.php (100%) rename {includes => src/includes}/footer.php.1345Uhr (100%) rename {includes => src/includes}/header.php (100%) rename {includes => src/includes}/header.php.1343Uhr (100%) rename {includes => src/includes}/header.php.1357Uhr (100%) rename index.php => src/index.php (100%) rename inventory.php => src/inventory.php (100%) rename {js => src/js}/main.js (100%) rename {js => src/js}/main.js.0629Uhr (100%) rename {js => src/js}/main.js.1310Uhr (100%) rename {js => src/js}/main.js.1346Uhr (100%) rename {js => src/js}/main.js.1357Uhr (100%) rename login.php => src/login.php (100%) rename logo.png => src/logo.png (100%) rename logout.php => src/logout.php (100%) rename plant_detail.php => src/plant_detail.php (100%) rename plants.php => src/plants.php (100%) rename profile.php => src/profile.php (100%) rename register.php => src/register.php (100%) rename seeds.php => src/seeds.php (100%) rename sensors.php => src/sensors.php (100%) rename {uploads => src/uploads}/user_1/plant_1_685d315173aef1.94747216.png (100%) rename wallpaper.png => src/wallpaper.png (100%) diff --git a/Dockerfile b/Dockerfile index a2c67cd..30060ad 100644 --- a/Dockerfile +++ b/Dockerfile @@ -18,7 +18,7 @@ RUN apt-get clean && rm -rf /var/lib/apt/lists/* WORKDIR /var/www/html # Copy application source -COPY . /var/www/html/ +COPY src/ /var/www/html/ # Set permissions for the web server RUN chown -R www-data:www-data /var/www/html \ diff --git a/README.md b/README.md index 7b8b9bd..dcb7609 100644 --- a/README.md +++ b/README.md @@ -2,55 +2,72 @@ Cazubu ist eine Webanwendung zur Verwaltung von Pflanzen, Inventar, Samen und Sensoren. -## Funktionen -- Pflanzenübersicht und Details -- Inventarverwaltung -- Samen-Datenbank -- Sensor-Integration -- Benutzerverwaltung (Login/Register) +## 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 -- Externe MySQL-Datenbank +- Docker Engine +- Eine laufende MySQL/MariaDB Datenbank ### Docker Build & Run -Das Projekt ist für den Betrieb im Docker-Container vorbereitet. - 1. **Image bauen:** ```bash docker build -t cazubu . ``` -2. **Container starten:** - Es müssen die Datenbank-Verbindungsdaten als Umgebungsvariablen übergeben werden. - +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 \ + docker run -d \ + -p 8080:80 \ -e DB_SERVER="deine-db-ip" \ - -e DB_USERNAME="dein-db-user" \ - -e DB_PASSWORD="dein-db-passwort" \ + -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 -| Variable | Beschreibung | Standard | -|----------|--------------|----------| +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 - Dockerisierung -- `Dockerfile` erstellt (PHP 8.2 + Apache + MySQLi/GD). -- `.dockerignore` hinzugefügt. -- CI/CD Pipeline Konfiguration `.gitea/workflows/build-push.yaml` hinzugefügt. -- `includes/db_connect.php` angepasst: Unterstützung für Umgebungsvariablen hinzugefügt. -- `README.md` erstellt. +### 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. \ No newline at end of file diff --git a/ajax_handler.php b/src/ajax_handler.php similarity index 100% rename from ajax_handler.php rename to src/ajax_handler.php diff --git a/api.php b/src/api.php similarity index 100% rename from api.php rename to src/api.php diff --git a/assets/dummy_plant.png b/src/assets/dummy_plant.png similarity index 100% rename from assets/dummy_plant.png rename to src/assets/dummy_plant.png diff --git a/css/style.css b/src/css/style.css similarity index 100% rename from css/style.css rename to src/css/style.css diff --git a/css/style.css.0629Uhr b/src/css/style.css.0629Uhr similarity index 100% rename from css/style.css.0629Uhr rename to src/css/style.css.0629Uhr diff --git a/css/style.css.1413Uhr b/src/css/style.css.1413Uhr similarity index 100% rename from css/style.css.1413Uhr rename to src/css/style.css.1413Uhr diff --git a/css/style.css.1908Uhr b/src/css/style.css.1908Uhr similarity index 100% rename from css/style.css.1908Uhr rename to src/css/style.css.1908Uhr diff --git a/includes/auth_check.php b/src/includes/auth_check.php similarity index 100% rename from includes/auth_check.php rename to src/includes/auth_check.php diff --git a/includes/db_connect.php b/src/includes/db_connect.php similarity index 100% rename from includes/db_connect.php rename to src/includes/db_connect.php diff --git a/includes/footer.php b/src/includes/footer.php similarity index 100% rename from includes/footer.php rename to src/includes/footer.php diff --git a/includes/footer.php.1345Uhr b/src/includes/footer.php.1345Uhr similarity index 100% rename from includes/footer.php.1345Uhr rename to src/includes/footer.php.1345Uhr diff --git a/includes/header.php b/src/includes/header.php similarity index 100% rename from includes/header.php rename to src/includes/header.php diff --git a/includes/header.php.1343Uhr b/src/includes/header.php.1343Uhr similarity index 100% rename from includes/header.php.1343Uhr rename to src/includes/header.php.1343Uhr diff --git a/includes/header.php.1357Uhr b/src/includes/header.php.1357Uhr similarity index 100% rename from includes/header.php.1357Uhr rename to src/includes/header.php.1357Uhr diff --git a/index.php b/src/index.php similarity index 100% rename from index.php rename to src/index.php diff --git a/inventory.php b/src/inventory.php similarity index 100% rename from inventory.php rename to src/inventory.php diff --git a/js/main.js b/src/js/main.js similarity index 100% rename from js/main.js rename to src/js/main.js diff --git a/js/main.js.0629Uhr b/src/js/main.js.0629Uhr similarity index 100% rename from js/main.js.0629Uhr rename to src/js/main.js.0629Uhr diff --git a/js/main.js.1310Uhr b/src/js/main.js.1310Uhr similarity index 100% rename from js/main.js.1310Uhr rename to src/js/main.js.1310Uhr diff --git a/js/main.js.1346Uhr b/src/js/main.js.1346Uhr similarity index 100% rename from js/main.js.1346Uhr rename to src/js/main.js.1346Uhr diff --git a/js/main.js.1357Uhr b/src/js/main.js.1357Uhr similarity index 100% rename from js/main.js.1357Uhr rename to src/js/main.js.1357Uhr diff --git a/login.php b/src/login.php similarity index 100% rename from login.php rename to src/login.php diff --git a/logo.png b/src/logo.png similarity index 100% rename from logo.png rename to src/logo.png diff --git a/logout.php b/src/logout.php similarity index 100% rename from logout.php rename to src/logout.php diff --git a/plant_detail.php b/src/plant_detail.php similarity index 100% rename from plant_detail.php rename to src/plant_detail.php diff --git a/plants.php b/src/plants.php similarity index 100% rename from plants.php rename to src/plants.php diff --git a/profile.php b/src/profile.php similarity index 100% rename from profile.php rename to src/profile.php diff --git a/register.php b/src/register.php similarity index 100% rename from register.php rename to src/register.php diff --git a/seeds.php b/src/seeds.php similarity index 100% rename from seeds.php rename to src/seeds.php diff --git a/sensors.php b/src/sensors.php similarity index 100% rename from sensors.php rename to src/sensors.php diff --git a/uploads/user_1/plant_1_685d315173aef1.94747216.png b/src/uploads/user_1/plant_1_685d315173aef1.94747216.png similarity index 100% rename from uploads/user_1/plant_1_685d315173aef1.94747216.png rename to src/uploads/user_1/plant_1_685d315173aef1.94747216.png diff --git a/wallpaper.png b/src/wallpaper.png similarity index 100% rename from wallpaper.png rename to src/wallpaper.png