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:
4
.gitignore
vendored
4
.gitignore
vendored
@@ -4,5 +4,7 @@ vendor/
|
||||
*.log
|
||||
.DS_Store
|
||||
Thumbs.db
|
||||
docker-compose.yml
|
||||
db-init/
|
||||
src/uploads/*
|
||||
!src/uploads/.gitkeep
|
||||
!src/uploads/.gitkeep
|
||||
|
||||
@@ -1,12 +1,14 @@
|
||||
FROM php:8.2-apache
|
||||
|
||||
# Install system dependencies and PHP extensions
|
||||
# mariadb-client added for auto-migration script
|
||||
RUN apt-get update && apt-get install -y \
|
||||
libpng-dev \
|
||||
libjpeg-dev \
|
||||
libfreetype6-dev \
|
||||
zip \
|
||||
unzip \
|
||||
mariadb-client \
|
||||
&& docker-php-ext-configure gd --with-freetype --with-jpeg \
|
||||
&& docker-php-ext-install -j$(nproc) gd mysqli pdo pdo_mysql \
|
||||
&& a2enmod rewrite
|
||||
@@ -24,5 +26,12 @@ COPY src/ /var/www/html/
|
||||
RUN chown -R www-data:www-data /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 80
|
||||
|
||||
# Set Entrypoint
|
||||
ENTRYPOINT ["docker-entrypoint.sh"]
|
||||
32
README.md
32
README.md
@@ -15,19 +15,15 @@ Cazubu ist eine moderne Webanwendung zur Verwaltung und Überwachung deiner Cann
|
||||
|
||||
## 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
|
||||
* Docker Engine
|
||||
* Eine laufende MySQL/MariaDB Datenbank (extern)
|
||||
* Eine laufende MySQL/MariaDB Datenbank (extern oder als separater Container)
|
||||
|
||||
### 2. Datenbank vorbereiten
|
||||
Importiere die Struktur in deine Datenbank:
|
||||
```bash
|
||||
mysql -u dein_user -p deine_db < src/database/install.sql
|
||||
```
|
||||
### 2. Container starten (Docker CLI)
|
||||
|
||||
### 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.
|
||||
|
||||
@@ -59,18 +55,16 @@ docker run -d \
|
||||
|
||||
## Bedienung 📖
|
||||
|
||||
* **Login:** `testnutzer` / `Start123!` (Bitte sofort ändern!)
|
||||
* **Erste Schritte:**
|
||||
1. Inventar -> Zonen anlegen.
|
||||
2. Samen -> Samen erfassen.
|
||||
3. Startseite -> Neue Pflanze.
|
||||
* **Login:** `testnutzer` / `Start123!` (Wird automatisch bei Erstinstallation erstellt)
|
||||
* **Passwort ändern:** Bitte ändere das Passwort sofort nach dem ersten Login unter "Profil".
|
||||
|
||||
---
|
||||
### 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
|
||||
23212
src/database/install.sql
23212
src/database/install.sql
File diff suppressed because it is too large
Load Diff
Reference in New Issue
Block a user