Docker Support: Added Dockerfile, updated DB connection for ENVs, and documented Docker usage in README
This commit is contained in:
23
Dockerfile
23
Dockerfile
@@ -1,4 +1,23 @@
|
||||
FROM php:8.2-apache
|
||||
RUN docker-php-ext-install mysqli && docker-php-ext-enable mysqli
|
||||
# Enable mod_rewrite for cleaner URLs if needed, though not strictly requested, it's good practice.
|
||||
|
||||
# Install dependencies
|
||||
RUN apt-get update && apt-get install -y \
|
||||
libpng-dev \
|
||||
libjpeg-dev \
|
||||
libfreetype6-dev \
|
||||
&& docker-php-ext-configure gd --with-freetype --with-jpeg \
|
||||
&& docker-php-ext-install -j$(nproc) gd mysqli
|
||||
|
||||
# Enable Apache rewrite module
|
||||
RUN a2enmod rewrite
|
||||
|
||||
# Copy application source
|
||||
COPY . /var/www/html/
|
||||
|
||||
# Set permissions for upload directory
|
||||
RUN mkdir -p /var/www/html/uploads/images && \
|
||||
chown -R www-data:www-data /var/www/html/uploads && \
|
||||
chmod -R 755 /var/www/html/uploads
|
||||
|
||||
# Expose port 80
|
||||
EXPOSE 80
|
||||
|
||||
23
README.md
23
README.md
@@ -65,6 +65,29 @@ Eine moderne, webbasierte Anwendung zur Verwaltung von Packlisten für Wanderung
|
||||
1. Führe das SQL-Skript `mysql_update.sql` auf deiner Datenbank aus.
|
||||
2. Überschreibe die PHP-Dateien mit der neuesten Version.
|
||||
|
||||
### Docker Deployment
|
||||
|
||||
Die Anwendung ist vollständig containerisiert ("Dockerized"). Du kannst sie direkt als Container starten und mit einer beliebigen externen MySQL/MariaDB-Datenbank verbinden.
|
||||
|
||||
1. **Image bauen:**
|
||||
```bash
|
||||
docker build -t packliste-app .
|
||||
```
|
||||
|
||||
2. **Container starten:**
|
||||
(Ersetze die Platzhalter durch deine Datenbank-Zugangsdaten)
|
||||
```bash
|
||||
docker run -d \
|
||||
-p 8080:80 \
|
||||
-e DB_HOST="deine-datenbank-ip" \
|
||||
-e DB_USER="dein_db_user" \
|
||||
-e DB_PASSWORD="dein_db_passwort" \
|
||||
-e DB_NAME="packliste" \
|
||||
--name packliste-container \
|
||||
packliste-app
|
||||
```
|
||||
Die App ist anschließend unter `http://localhost:8080` erreichbar.
|
||||
|
||||
---
|
||||
|
||||
## Bedienungsanleitung
|
||||
|
||||
43
db_connect.php
Executable file → Normal file
43
db_connect.php
Executable file → Normal file
@@ -1,41 +1,42 @@
|
||||
<?php
|
||||
// db_connect.php - Zentrale Datei für die Datenbankverbindung
|
||||
|
||||
// NEU: Lade Zugangsdaten aus einer sicheren Konfigurationsdatei.
|
||||
// Diese Datei sollte außerhalb deines öffentlichen Web-Verzeichnisses liegen!
|
||||
// z.B. in /var/www/config/packliste.ini
|
||||
$config_path = __DIR__ . '/config.ini'; // Pfad für flache Struktur angepasst
|
||||
// 1. Priorität: Umgebungsvariablen (Docker / Environment)
|
||||
$servername = getenv('DB_HOST');
|
||||
$username = getenv('DB_USER');
|
||||
$password = getenv('DB_PASSWORD');
|
||||
$dbname = getenv('DB_NAME');
|
||||
|
||||
if (!file_exists($config_path)) {
|
||||
die("Kritischer Fehler: Die Konfigurationsdatei wurde nicht gefunden. Bitte erstellen Sie die 'config.ini'.");
|
||||
// 2. Fallback: config.ini (Lokale Entwicklung)
|
||||
if (!$servername || !$username || !$dbname) {
|
||||
$config_path = __DIR__ . '/config.ini';
|
||||
if (file_exists($config_path)) {
|
||||
$config = parse_ini_file($config_path);
|
||||
if ($config) {
|
||||
$servername = $config['servername'] ?? null;
|
||||
$username = $config['username'] ?? null;
|
||||
$password = $config['password'] ?? null;
|
||||
$dbname = $config['dbname'] ?? null;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
$config = parse_ini_file($config_path);
|
||||
|
||||
if ($config === false) {
|
||||
die("Kritischer Fehler: Konfigurationsdatei konnte nicht gelesen werden.");
|
||||
if (!$servername || !$username || !$dbname) {
|
||||
die("Kritischer Fehler: Keine Datenbank-Konfiguration gefunden (Weder ENV noch config.ini).");
|
||||
}
|
||||
|
||||
$servername = $config['servername'];
|
||||
$username = $config['username'];
|
||||
$password = $config['password'];
|
||||
$dbname = $config['dbname'];
|
||||
|
||||
|
||||
// Verbindung herstellen
|
||||
$conn = new mysqli($servername, $username, $password, $dbname);
|
||||
|
||||
// Verbindung prüfen
|
||||
if ($conn->connect_error) {
|
||||
// In einer Produktivumgebung sollte der Fehler geloggt, aber nicht dem Benutzer angezeigt werden.
|
||||
error_log("Datenbankverbindungsfehler: " . $conn->connect_error);
|
||||
die("Verbindung zur Datenbank konnte nicht hergestellt werden. Bitte versuchen Sie es später erneut.");
|
||||
die("Verbindung zur Datenbank konnte nicht hergestellt werden.");
|
||||
}
|
||||
|
||||
// Zeichensatz auf UTF-8 setzen, um Probleme mit Sonderzeichen zu vermeiden
|
||||
// Zeichensatz auf UTF-8 setzen
|
||||
$conn->set_charset("utf8mb4");
|
||||
|
||||
// NEU: Setze eine Standard-Zeitzone, um konsistente Zeitstempel zu gewährleisten.
|
||||
// Zeitzone setzen
|
||||
date_default_timezone_set('Europe/Berlin');
|
||||
|
||||
?>
|
||||
|
||||
Reference in New Issue
Block a user