Some more changes for Docker
This commit is contained in:
@@ -0,0 +1,91 @@
|
||||
<?php
|
||||
|
||||
/**
|
||||
* Master Database Setup & Initialization Script
|
||||
* Runs user generation and SQL schema import automatically on Docker Compose initialization.
|
||||
*/
|
||||
|
||||
echo "========================================\n";
|
||||
echo " WKVS Database Automated Initializer \n";
|
||||
echo "========================================\n\n";
|
||||
|
||||
$setupDir = __DIR__;
|
||||
$baseDir = dirname(__DIR__, 2);
|
||||
|
||||
// 1. Run User Generation & Grant setup
|
||||
echo "[1/3] Erstelle/Synchronisiere Datenbank-Benutzer...\n";
|
||||
require_once $setupDir . '/generate-users.php';
|
||||
|
||||
$userResult = sync_and_create_db_users();
|
||||
|
||||
if (!$userResult['success']) {
|
||||
echo "❌ Fehler bei Benutzererstellung: " . $userResult['message'] . "\n";
|
||||
exit(1);
|
||||
}
|
||||
|
||||
echo "✓ " . $userResult['message'] . "\n\n";
|
||||
|
||||
// 2. Generate SQL structure file with table prefix
|
||||
echo "[2/3] Generiere SQL-Struktur & Tabellen-Prefix...\n";
|
||||
require $setupDir . '/generate-sql.php';
|
||||
|
||||
echo "\n[3/3] Importiere Tabellen-Struktur in die Datenbank...\n";
|
||||
|
||||
$generatedSqlFile = $setupDir . '/sql-database.sql';
|
||||
|
||||
if (!file_exists($generatedSqlFile)) {
|
||||
echo "❌ Fehler: '$generatedSqlFile' wurde nicht gefunden.\n";
|
||||
exit(1);
|
||||
}
|
||||
|
||||
// Connect to MariaDB to import SQL schema
|
||||
$dbEnvFile = $baseDir . '/config/.env.db';
|
||||
$dbEnv = parse_env_file_simple($dbEnvFile);
|
||||
|
||||
$rootPass = $dbEnv['MYSQL_ROOT_PASSWORD'] ?? '';
|
||||
$dbName = $dbEnv['MYSQL_DATABASE'] ?? 'devdb_';
|
||||
$dbHost = getenv('DB_HOST') ?: ($dbEnv['DB_HOST'] ?? 'mariadb');
|
||||
$dbPort = (int)($dbEnv['DB_PORT'] ?? 3306);
|
||||
|
||||
$mysqli = null;
|
||||
foreach ([$dbHost, 'mariadb', '127.0.0.1', 'localhost'] as $tryHost) {
|
||||
try {
|
||||
$conn = @new mysqli($tryHost, 'root', $rootPass, $dbName, $dbPort);
|
||||
if (!$conn->connect_error) {
|
||||
$mysqli = $conn;
|
||||
break;
|
||||
}
|
||||
} catch (Throwable $e) {
|
||||
continue;
|
||||
}
|
||||
}
|
||||
|
||||
if (!$mysqli) {
|
||||
echo "❌ Fehler: Konnte keine Verbindung als 'root' zu MariaDB herstellen.\n";
|
||||
exit(1);
|
||||
}
|
||||
|
||||
$sqlContent = file_get_contents($generatedSqlFile);
|
||||
|
||||
if ($mysqli->multi_query($sqlContent)) {
|
||||
do {
|
||||
if ($res = $mysqli->store_result()) {
|
||||
$res->free();
|
||||
}
|
||||
} while ($mysqli->more_results() && $mysqli->next_result());
|
||||
|
||||
if ($mysqli->errno) {
|
||||
echo "❌ SQL Import-Fehler: " . $mysqli->error . "\n";
|
||||
exit(1);
|
||||
}
|
||||
echo "✓ Datenbank-Struktur erfolgreich importiert!\n\n";
|
||||
} else {
|
||||
echo "❌ SQL Import-Fehler: " . $mysqli->error . "\n";
|
||||
exit(1);
|
||||
}
|
||||
|
||||
$mysqli->close();
|
||||
|
||||
echo "========================================\n";
|
||||
echo "✅ Datenbank-Initialisierung abgeschlossen!\n";
|
||||
echo "========================================\n";
|
||||
Reference in New Issue
Block a user