Refactor: Move app to src/, update Dockerfile and detailed README
All checks were successful
Docker Build & Push / build-and-push (push) Successful in 31s
@@ -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 \
|
||||||
|
|||||||
65
README.md
@@ -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.
|
|
||||||
|
Before Width: | Height: | Size: 1.0 MiB After Width: | Height: | Size: 1.0 MiB |
|
Before Width: | Height: | Size: 435 KiB After Width: | Height: | Size: 435 KiB |
|
Before Width: | Height: | Size: 768 KiB After Width: | Height: | Size: 768 KiB |
|
Before Width: | Height: | Size: 6.1 MiB After Width: | Height: | Size: 6.1 MiB |