Fix: Remove dev files, add auto-migration entrypoint, update Dockerfile/README
All checks were successful
Docker Build & Push / build-and-push (push) Successful in 1m44s
All checks were successful
Docker Build & Push / build-and-push (push) Successful in 1m44s
This commit is contained in:
2
.gitignore
vendored
2
.gitignore
vendored
@@ -4,5 +4,7 @@ vendor/
|
|||||||
*.log
|
*.log
|
||||||
.DS_Store
|
.DS_Store
|
||||||
Thumbs.db
|
Thumbs.db
|
||||||
|
docker-compose.yml
|
||||||
|
db-init/
|
||||||
src/uploads/*
|
src/uploads/*
|
||||||
!src/uploads/.gitkeep
|
!src/uploads/.gitkeep
|
||||||
@@ -1,12 +1,14 @@
|
|||||||
FROM php:8.2-apache
|
FROM php:8.2-apache
|
||||||
|
|
||||||
# Install system dependencies and PHP extensions
|
# Install system dependencies and PHP extensions
|
||||||
|
# mariadb-client added for auto-migration script
|
||||||
RUN apt-get update && apt-get install -y \
|
RUN apt-get update && apt-get install -y \
|
||||||
libpng-dev \
|
libpng-dev \
|
||||||
libjpeg-dev \
|
libjpeg-dev \
|
||||||
libfreetype6-dev \
|
libfreetype6-dev \
|
||||||
zip \
|
zip \
|
||||||
unzip \
|
unzip \
|
||||||
|
mariadb-client \
|
||||||
&& docker-php-ext-configure gd --with-freetype --with-jpeg \
|
&& docker-php-ext-configure gd --with-freetype --with-jpeg \
|
||||||
&& docker-php-ext-install -j$(nproc) gd mysqli pdo pdo_mysql \
|
&& docker-php-ext-install -j$(nproc) gd mysqli pdo pdo_mysql \
|
||||||
&& a2enmod rewrite
|
&& a2enmod rewrite
|
||||||
@@ -24,5 +26,12 @@ COPY src/ /var/www/html/
|
|||||||
RUN chown -R www-data:www-data /var/www/html \
|
RUN chown -R www-data:www-data /var/www/html \
|
||||||
&& chmod -R 755 /var/www/html
|
&& chmod -R 755 /var/www/html
|
||||||
|
|
||||||
|
# Copy and setup entrypoint
|
||||||
|
COPY docker-entrypoint.sh /usr/local/bin/
|
||||||
|
RUN chmod +x /usr/local/bin/docker-entrypoint.sh
|
||||||
|
|
||||||
# Expose port 80
|
# Expose port 80
|
||||||
EXPOSE 80
|
EXPOSE 80
|
||||||
|
|
||||||
|
# Set Entrypoint
|
||||||
|
ENTRYPOINT ["docker-entrypoint.sh"]
|
||||||
30
README.md
30
README.md
@@ -15,19 +15,15 @@ Cazubu ist eine moderne Webanwendung zur Verwaltung und Überwachung deiner Cann
|
|||||||
|
|
||||||
## Installation & Betrieb 🛠️
|
## Installation & Betrieb 🛠️
|
||||||
|
|
||||||
Dieses Projekt ist für den Betrieb als Docker-Container ausgelegt.
|
Dieses Projekt ist für den Betrieb als Docker-Container ausgelegt. Es bietet eine **automatische Datenbank-Initialisierung** beim ersten Start.
|
||||||
|
|
||||||
### 1. Voraussetzungen
|
### 1. Voraussetzungen
|
||||||
* Docker Engine
|
* Docker Engine
|
||||||
* Eine laufende MySQL/MariaDB Datenbank (extern)
|
* Eine laufende MySQL/MariaDB Datenbank (extern oder als separater Container)
|
||||||
|
|
||||||
### 2. Datenbank vorbereiten
|
### 2. Container starten (Docker CLI)
|
||||||
Importiere die Struktur in deine Datenbank:
|
|
||||||
```bash
|
|
||||||
mysql -u dein_user -p deine_db < src/database/install.sql
|
|
||||||
```
|
|
||||||
|
|
||||||
### 3. Container starten (Docker CLI)
|
Der Container prüft beim Start automatisch, ob die Datenbanktabellen existieren. Wenn nicht, wird die Struktur angelegt und ein Standard-Benutzer erstellt.
|
||||||
|
|
||||||
Verwende diesen Befehl, um den Container zu starten. Passe die Werte für `DB_SERVER`, `DB_USERNAME`, `DB_PASSWORD` und `DB_NAME` an deine Umgebung an.
|
Verwende diesen Befehl, um den Container zu starten. Passe die Werte für `DB_SERVER`, `DB_USERNAME`, `DB_PASSWORD` und `DB_NAME` an deine Umgebung an.
|
||||||
|
|
||||||
@@ -59,18 +55,16 @@ docker run -d \
|
|||||||
|
|
||||||
## Bedienung 📖
|
## Bedienung 📖
|
||||||
|
|
||||||
* **Login:** `testnutzer` / `Start123!` (Bitte sofort ändern!)
|
* **Login:** `testnutzer` / `Start123!` (Wird automatisch bei Erstinstallation erstellt)
|
||||||
* **Erste Schritte:**
|
* **Passwort ändern:** Bitte ändere das Passwort sofort nach dem ersten Login unter "Profil".
|
||||||
1. Inventar -> Zonen anlegen.
|
|
||||||
2. Samen -> Samen erfassen.
|
|
||||||
3. Startseite -> Neue Pflanze.
|
|
||||||
|
|
||||||
---
|
### Sensoren verbinden 🌡️
|
||||||
|
|
||||||
## Sensoren integrieren 🌡️
|
Jeder Benutzer hat einen eigenen API-Key (siehe "Profil").
|
||||||
|
Sende Sensordaten per HTTP GET Request an:
|
||||||
|
|
||||||
Sende Daten per HTTP GET (z.B. vom ESP32):
|
```
|
||||||
|
http://DEINE-IP/api.php?apikey=DEIN_KEY&pflanze=ID&sensor=temp&wert=24.5
|
||||||
`http://DEINE-IP/api.php?apikey=DEIN_KEY&pflanze=ID&sensor=temp&wert=24.5`
|
```
|
||||||
|
|
||||||
*(API-Key findest du im Profil, Pflanzen-ID in der Detailansicht)*
|
*(API-Key findest du im Profil, Pflanzen-ID in der Detailansicht)*
|
||||||
23141
db-init/init.sql
23141
db-init/init.sql
File diff suppressed because it is too large
Load Diff
@@ -1,55 +0,0 @@
|
|||||||
version: '3.8'
|
|
||||||
|
|
||||||
services:
|
|
||||||
app:
|
|
||||||
build: .
|
|
||||||
container_name: cazubu-app
|
|
||||||
ports:
|
|
||||||
- "8090:80"
|
|
||||||
volumes:
|
|
||||||
- ./src:/var/www/html
|
|
||||||
environment:
|
|
||||||
- DB_SERVER=db
|
|
||||||
- DB_USERNAME=cazubu
|
|
||||||
- DB_PASSWORD=dev_secret
|
|
||||||
- DB_NAME=cazubu
|
|
||||||
depends_on:
|
|
||||||
- db
|
|
||||||
networks:
|
|
||||||
- cazubu-net
|
|
||||||
|
|
||||||
db:
|
|
||||||
image: mariadb:10.11
|
|
||||||
container_name: cazubu-db
|
|
||||||
environment:
|
|
||||||
- MYSQL_ROOT_PASSWORD=root_secret
|
|
||||||
- MYSQL_DATABASE=cazubu
|
|
||||||
- MYSQL_USER=cazubu
|
|
||||||
- MYSQL_PASSWORD=dev_secret
|
|
||||||
volumes:
|
|
||||||
- db_data:/var/lib/mysql
|
|
||||||
- ./db-init:/docker-entrypoint-initdb.d
|
|
||||||
ports:
|
|
||||||
- "3306:3306"
|
|
||||||
networks:
|
|
||||||
- cazubu-net
|
|
||||||
|
|
||||||
phpmyadmin:
|
|
||||||
image: phpmyadmin/phpmyadmin
|
|
||||||
container_name: cazubu-pma
|
|
||||||
environment:
|
|
||||||
- PMA_HOST=db
|
|
||||||
- PMA_USER=cazubu
|
|
||||||
- PMA_PASSWORD=dev_secret
|
|
||||||
ports:
|
|
||||||
- "8081:80"
|
|
||||||
depends_on:
|
|
||||||
- db
|
|
||||||
networks:
|
|
||||||
- cazubu-net
|
|
||||||
|
|
||||||
volumes:
|
|
||||||
db_data:
|
|
||||||
|
|
||||||
networks:
|
|
||||||
cazubu-net:
|
|
||||||
45
docker-entrypoint.sh
Normal file
45
docker-entrypoint.sh
Normal file
@@ -0,0 +1,45 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
set -e
|
||||||
|
|
||||||
|
# Funktion zum Warten auf MySQL
|
||||||
|
wait_for_db() {
|
||||||
|
echo "Warte auf Datenbank-Verbindung zu $DB_SERVER..."
|
||||||
|
# Max 30 Sekunden warten
|
||||||
|
for i in {1..30}; do
|
||||||
|
if mysql -h"$DB_SERVER" -u"$DB_USERNAME" -p"$DB_PASSWORD" -e "SELECT 1" >/dev/null 2>&1; then
|
||||||
|
echo "Datenbank ist erreichbar!"
|
||||||
|
return 0
|
||||||
|
fi
|
||||||
|
sleep 1
|
||||||
|
done
|
||||||
|
echo "Fehler: Datenbank nicht erreichbar nach 30 Sekunden."
|
||||||
|
return 1
|
||||||
|
}
|
||||||
|
|
||||||
|
# Wenn DB_SERVER gesetzt ist, versuchen wir die Migration
|
||||||
|
if [ ! -z "$DB_SERVER" ]; then
|
||||||
|
if wait_for_db; then
|
||||||
|
echo "Prüfe Datenbank-Schema..."
|
||||||
|
|
||||||
|
# Prüfen ob 'users' Tabelle existiert
|
||||||
|
if ! mysql -h"$DB_SERVER" -u"$DB_USERNAME" -p"$DB_PASSWORD" "$DB_NAME" -e "SELECT 1 FROM users LIMIT 1" >/dev/null 2>&1; then
|
||||||
|
echo "Initialisiere Datenbank-Struktur..."
|
||||||
|
mysql -h"$DB_SERVER" -u"$DB_USERNAME" -p"$DB_PASSWORD" "$DB_NAME" < /var/www/html/database/install.sql
|
||||||
|
|
||||||
|
# Standard-User anlegen (testnutzer / Start123!)
|
||||||
|
echo "Lege Standard-Benutzer an..."
|
||||||
|
# Hash für 'Start123!'
|
||||||
|
HASH='$2y$10$Ov7qzHnk4EKYdDNLNP073ecsrRJM5VtK4iWcMKBFBosEc6kaFbC.y'
|
||||||
|
mysql -h"$DB_SERVER" -u"$DB_USERNAME" -p"$DB_PASSWORD" "$DB_NAME" -e "INSERT INTO users (username, password_hash) VALUES ('testnutzer', '$HASH')"
|
||||||
|
|
||||||
|
echo "Datenbank erfolgreich initialisiert."
|
||||||
|
else
|
||||||
|
echo "Datenbank ist bereits initialisiert."
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
echo "Warnung: DB_SERVER nicht gesetzt. Überspringe Datenbank-Check."
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Apache starten
|
||||||
|
exec apache2-foreground
|
||||||
23210
src/database/install.sql
23210
src/database/install.sql
File diff suppressed because it is too large
Load Diff
Reference in New Issue
Block a user