Add project files

This commit is contained in:
Frank Woeckener
2025-03-18 10:42:10 +01:00
parent e429c37f62
commit fe93319d2a
29 changed files with 816 additions and 4 deletions

View File

@@ -0,0 +1,18 @@
FROM php:8.1-cli
# GD Extension installieren
RUN apt-get update && apt-get install -y \
libfreetype6-dev \
libjpeg62-turbo-dev \
libpng-dev \
&& docker-php-ext-configure gd --with-freetype --with-jpeg \
&& docker-php-ext-install -j$(nproc) gd
# PDO MySQL Extension installieren
RUN docker-php-ext-install pdo pdo_mysql
WORKDIR /app
COPY ./src .
# Entwicklungsserver starten
CMD ["php", "-S", "0.0.0.0:8000"]

View File

@@ -0,0 +1,34 @@
version: '3'
services:
php-app:
build: .
ports:
- "8000:8000"
volumes:
- ./src:/app
environment:
DB_HOST: mysql-db
DB_USER: root
DB_PASSWORD: secret
DB_NAME: testdb
depends_on:
- mysql-db
networks:
- app-network
mysql-db:
image: mysql:8.0
environment:
MYSQL_ROOT_PASSWORD: secret
MYSQL_DATABASE: testdb
volumes:
- db-data:/var/lib/mysql
networks:
- app-network
networks:
app-network:
volumes:
db-data:

View File

@@ -0,0 +1,59 @@
<?php
$host = getenv('DB_HOST') ?: 'mysql-db';
$user = getenv('DB_USER') ?: 'root';
$pass = getenv('DB_PASSWORD') ?: 'secret';
$dbname = getenv('DB_NAME') ?: 'testdb';
echo "<h1>Datenbank-Verbindungstest</h1>";
echo "<p>Verbindungsversuch zu: $host</p>";
try {
// Verbindung erstellen
$conn = new PDO("mysql:host=$host;dbname=$dbname", $user, $pass);
// PDO-Fehlerbehandlung aktivieren
$conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
echo "<div style='color:green;'>Verbindung erfolgreich!</div>";
// Prüfen, ob Testtabelle existiert, sonst erstellen
$stmt = $conn->query("SHOW TABLES LIKE 'test_table'");
if ($stmt->rowCount() == 0) {
$conn->exec("CREATE TABLE test_table (
id INT AUTO_INCREMENT PRIMARY KEY,
message VARCHAR(255),
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
)");
$conn->exec("INSERT INTO test_table (message) VALUES ('Testdaten 1')");
$conn->exec("INSERT INTO test_table (message) VALUES ('Testdaten 2')");
echo "<p>Testtabelle erstellt und mit Daten gefüllt.</p>";
}
// Daten auslesen
$stmt = $conn->query("SELECT * FROM test_table");
$rows = $stmt->fetchAll(PDO::FETCH_ASSOC);
echo "<h2>Daten aus der Datenbank:</h2>";
echo "<table border='1'>";
echo "<tr><th>ID</th><th>Nachricht</th><th>Erstellt am</th></tr>";
foreach ($rows as $row) {
echo "<tr>";
echo "<td>" . $row['id'] . "</td>";
echo "<td>" . $row['message'] . "</td>";
echo "<td>" . $row['created_at'] . "</td>";
echo "</tr>";
}
echo "</table>";
} catch(PDOException $e) {
echo "<div style='color:red;'>Verbindungsfehler: " . $e->getMessage() . "</div>";
}
// Verbindung schließen
$conn = null;
?>
<p>Seite geladen um: <?php echo date('H:i:s'); ?></p>
<p><a href="index.php">Zurück zur Startseite</a></p>

View File

@@ -0,0 +1,29 @@
<?php
// Test für GD Extension
header('Content-Type: image/png');
// Canvas erstellen (300x200px)
$image = imagecreatetruecolor(300, 200);
// Farben definieren
$background = imagecolorallocate($image, 0, 153, 204);
$text_color = imagecolorallocate($image, 255, 255, 255);
$border_color = imagecolorallocate($image, 0, 0, 0);
// Hintergrund füllen
imagefill($image, 0, 0, $background);
// Rahmen zeichnen
imagerectangle($image, 0, 0, 299, 199, $border_color);
// Text schreiben
$text = "GD funktioniert!";
imagestring($image, 5, 60, 80, $text, $text_color);
// Zeit anzeigen
$time = date('H:i:s');
imagestring($image, 3, 100, 120, "Zeit: $time", $text_color);
// Bild ausgeben
imagepng($image);
imagedestroy($image);

View File

@@ -0,0 +1,22 @@
<!DOCTYPE html>
<html lang="de">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>PHP Docker Demo</title>
</head>
<body>
<h1>PHP Docker Demo</h1>
<h2>PHP Info</h2>
<p>PHP Version: <?php echo phpversion(); ?></p>
<h2>Tests</h2>
<ul>
<li><a href="image-test.php">GD Image Test</a> (benötigt GD Extension)</li>
<li><a href="db-test.php">Datenbank-Test</a> (benötigt MySQL/MariaDB Verbindung)</li>
</ul>
<p>Diese Datei wurde geladen um: <?php echo date('H:i:s'); ?></p>
</body>
</html>