Refactor: Move app to src/, update Dockerfile and detailed README
All checks were successful
Docker Build & Push / build-and-push (push) Successful in 31s

This commit is contained in:
Gemini Bot
2025-12-07 17:12:22 +00:00
parent 61ede4c325
commit 5880593831
34 changed files with 42 additions and 25 deletions

View File

@@ -18,7 +18,7 @@ RUN apt-get clean && rm -rf /var/lib/apt/lists/*
WORKDIR /var/www/html WORKDIR /var/www/html
# Copy application source # Copy application source
COPY . /var/www/html/ COPY src/ /var/www/html/
# Set permissions for the web server # Set permissions for the web server
RUN chown -R www-data:www-data /var/www/html \ RUN chown -R www-data:www-data /var/www/html \

View File

@@ -2,55 +2,72 @@
Cazubu ist eine Webanwendung zur Verwaltung von Pflanzen, Inventar, Samen und Sensoren. Cazubu ist eine Webanwendung zur Verwaltung von Pflanzen, Inventar, Samen und Sensoren.
## Funktionen ## Projektstruktur
- Pflanzenübersicht und Details Das Projekt ist so aufgebaut, dass der Quellcode vom Deployment-Setup getrennt ist:
- Inventarverwaltung - **`src/`**: Enthält den gesamten PHP-Quellcode, Assets und Frontend-Ressourcen.
- Samen-Datenbank - **`Dockerfile`**: Definition des Docker-Images.
- Sensor-Integration - **`.gitea/workflows`**: CI/CD-Konfiguration.
- Benutzerverwaltung (Login/Register)
## Installation & Betrieb ## Installation & Betrieb
### Voraussetzungen ### Voraussetzungen
- Docker - Docker Engine
- Externe MySQL-Datenbank - Eine laufende MySQL/MariaDB Datenbank
### Docker Build & Run ### Docker Build & Run
Das Projekt ist für den Betrieb im Docker-Container vorbereitet.
1. **Image bauen:** 1. **Image bauen:**
```bash ```bash
docker build -t cazubu . docker build -t cazubu .
``` ```
2. **Container starten:** 2. **Container starten (Produktiv):**
Es müssen die Datenbank-Verbindungsdaten als Umgebungsvariablen übergeben werden. Für den produktiven Einsatz sollten Uploads (Bilder) persistent gespeichert werden. Dafür binden wir ein Volume an `/var/www/html/uploads`.
```bash ```bash
docker run -d -p 8080:80 \ docker run -d \
-p 8080:80 \
-e DB_SERVER="deine-db-ip" \ -e DB_SERVER="deine-db-ip" \
-e DB_USERNAME="dein-db-user" \ -e DB_USERNAME="cazubu" \
-e DB_PASSWORD="dein-db-passwort" \ -e DB_PASSWORD="dein-sicheres-passwort" \
-e DB_NAME="cazubu" \ -e DB_NAME="cazubu" \
-v cazubu_uploads:/var/www/html/uploads \
--name cazubu-app \ --name cazubu-app \
--restart unless-stopped \
cazubu cazubu
``` ```
### Umgebungsvariablen ### 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_SERVER` | IP oder Hostname des Datenbankservers | `172.30.242.130` |
| `DB_USERNAME` | Datenbank-Benutzer | `cazubu` | | `DB_USERNAME` | Datenbank-Benutzer | `cazubu` |
| `DB_PASSWORD` | Datenbank-Passwort | (interner Standard) | | `DB_PASSWORD` | Datenbank-Passwort | (interner Standard) |
| `DB_NAME` | Name der Datenbank | `cazubu` | | `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 ## Changelog
### 2025-12-07 - Dockerisierung ### 2025-12-07 - Refactoring & Dockerisierung
- `Dockerfile` erstellt (PHP 8.2 + Apache + MySQLi/GD). - **Struktur:** Quellcode nach `src/` verschoben für saubereres Root-Verzeichnis.
- `.dockerignore` hinzugefügt. - **Docker:** `Dockerfile` angepasst (kopiert nun `src/`).
- CI/CD Pipeline Konfiguration `.gitea/workflows/build-push.yaml` hinzugefügt. - **Doku:** `README.md` erweitert um detaillierte Deployment-Infos und Volume-Handling.
- `includes/db_connect.php` angepasst: Unterstützung für Umgebungsvariablen hinzugefügt. - **CI/CD:** Pipeline für automatischen Build & Push eingerichtet.
- `README.md` erstellt.

View File

Before

Width:  |  Height:  |  Size: 1.0 MiB

After

Width:  |  Height:  |  Size: 1.0 MiB

View File

Before

Width:  |  Height:  |  Size: 435 KiB

After

Width:  |  Height:  |  Size: 435 KiB

View File

Before

Width:  |  Height:  |  Size: 768 KiB

After

Width:  |  Height:  |  Size: 768 KiB

View File

Before

Width:  |  Height:  |  Size: 6.1 MiB

After

Width:  |  Height:  |  Size: 6.1 MiB