Enhance rebuild process with Docker support; update cache handling and fallback logic
This commit is contained in:
@@ -383,15 +383,104 @@ class EntityValidator:
|
|||||||
"""Führe den EspoCRM Rebuild aus."""
|
"""Führe den EspoCRM Rebuild aus."""
|
||||||
print_header("7. ESPOCRM REBUILD")
|
print_header("7. ESPOCRM REBUILD")
|
||||||
|
|
||||||
|
# Prüfe ob wir in einem Docker-Volume sind
|
||||||
|
is_docker_volume = '/docker/volumes/' in str(self.base_path)
|
||||||
|
|
||||||
|
if is_docker_volume:
|
||||||
|
# Versuche Docker-Container zu finden
|
||||||
|
try:
|
||||||
|
result = subprocess.run(
|
||||||
|
['docker', 'ps', '--format', '{{.Names}}'],
|
||||||
|
capture_output=True,
|
||||||
|
text=True,
|
||||||
|
timeout=5
|
||||||
|
)
|
||||||
|
|
||||||
|
containers = result.stdout.strip().split('\n')
|
||||||
|
espo_container = None
|
||||||
|
|
||||||
|
# Suche nach EspoCRM Container (meist "espocrm" ohne Suffix)
|
||||||
|
for container in containers:
|
||||||
|
if container.lower() in ['espocrm', 'espocrm-app']:
|
||||||
|
espo_container = container
|
||||||
|
break
|
||||||
|
|
||||||
|
if not espo_container:
|
||||||
|
# Fallback: erster Container mit "espo" im Namen
|
||||||
|
for container in containers:
|
||||||
|
if 'espo' in container.lower() and 'websocket' not in container.lower() and 'daemon' not in container.lower() and 'db' not in container.lower():
|
||||||
|
espo_container = container
|
||||||
|
break
|
||||||
|
|
||||||
|
if espo_container:
|
||||||
|
print_info(f"Docker-Container erkannt: {espo_container}")
|
||||||
|
|
||||||
|
# Schritt 1: Cache löschen
|
||||||
|
print_info("Lösche Cache...")
|
||||||
|
cache_result = subprocess.run(
|
||||||
|
['docker', 'exec', espo_container, 'php', 'command.php', 'clear-cache'],
|
||||||
|
capture_output=True,
|
||||||
|
text=True,
|
||||||
|
timeout=30
|
||||||
|
)
|
||||||
|
|
||||||
|
if cache_result.returncode == 0:
|
||||||
|
print_success("Cache erfolgreich gelöscht")
|
||||||
|
else:
|
||||||
|
print_warning("Cache-Löschung fehlgeschlagen, fahre trotzdem fort...")
|
||||||
|
|
||||||
|
# Schritt 2: Rebuild
|
||||||
|
print_info("Starte Rebuild (kann 10-30 Sekunden dauern)...")
|
||||||
|
result = subprocess.run(
|
||||||
|
['docker', 'exec', espo_container, 'php', 'command.php', 'rebuild'],
|
||||||
|
capture_output=True,
|
||||||
|
text=True,
|
||||||
|
timeout=60
|
||||||
|
)
|
||||||
|
|
||||||
|
if result.returncode == 0:
|
||||||
|
print_success("Rebuild erfolgreich abgeschlossen")
|
||||||
|
if result.stdout:
|
||||||
|
print(f" {result.stdout.strip()}")
|
||||||
|
return True
|
||||||
|
else:
|
||||||
|
print_error("Rebuild fehlgeschlagen:")
|
||||||
|
if result.stderr:
|
||||||
|
print(f"\n{result.stderr}")
|
||||||
|
return False
|
||||||
|
else:
|
||||||
|
print_warning("Kein EspoCRM Docker-Container gefunden")
|
||||||
|
print_info("Versuche lokalen Rebuild...")
|
||||||
|
except Exception as e:
|
||||||
|
print_warning(f"Docker-Erkennung fehlgeschlagen: {e}")
|
||||||
|
print_info("Versuche lokalen Rebuild...")
|
||||||
|
|
||||||
|
# Lokaler Rebuild (Fallback)
|
||||||
rebuild_script = self.base_path / "rebuild.php"
|
rebuild_script = self.base_path / "rebuild.php"
|
||||||
if not rebuild_script.exists():
|
if not rebuild_script.exists():
|
||||||
print_error(f"rebuild.php nicht gefunden in {self.base_path}")
|
print_error(f"rebuild.php nicht gefunden in {self.base_path}")
|
||||||
return False
|
return False
|
||||||
|
|
||||||
try:
|
try:
|
||||||
print_info("Starte Rebuild (kann 10-30 Sekunden dauern)...")
|
# Schritt 1: Cache löschen
|
||||||
|
print_info("Lösche Cache...")
|
||||||
|
cache_result = subprocess.run(
|
||||||
|
['php', 'command.php', 'clear-cache'],
|
||||||
|
cwd=str(self.base_path),
|
||||||
|
capture_output=True,
|
||||||
|
text=True,
|
||||||
|
timeout=30
|
||||||
|
)
|
||||||
|
|
||||||
|
if cache_result.returncode == 0:
|
||||||
|
print_success("Cache erfolgreich gelöscht")
|
||||||
|
else:
|
||||||
|
print_warning("Cache-Löschung fehlgeschlagen, fahre trotzdem fort...")
|
||||||
|
|
||||||
|
# Schritt 2: Rebuild
|
||||||
|
print_info("Starte lokalen Rebuild (kann 10-30 Sekunden dauern)...")
|
||||||
result = subprocess.run(
|
result = subprocess.run(
|
||||||
['php', str(rebuild_script)],
|
['php', 'command.php', 'rebuild'],
|
||||||
cwd=str(self.base_path),
|
cwd=str(self.base_path),
|
||||||
capture_output=True,
|
capture_output=True,
|
||||||
text=True,
|
text=True,
|
||||||
|
|||||||
@@ -359,8 +359,8 @@ return [
|
|||||||
0 => 'youtube.com',
|
0 => 'youtube.com',
|
||||||
1 => 'google.com'
|
1 => 'google.com'
|
||||||
],
|
],
|
||||||
'cacheTimestamp' => 1769208633,
|
'cacheTimestamp' => 1769209783,
|
||||||
'microtime' => 1769208633.477855,
|
'microtime' => 1769209783.769122,
|
||||||
'siteUrl' => 'https://crm.bitbylaw.com',
|
'siteUrl' => 'https://crm.bitbylaw.com',
|
||||||
'fullTextSearchMinLength' => 4,
|
'fullTextSearchMinLength' => 4,
|
||||||
'appTimestamp' => 1768843902,
|
'appTimestamp' => 1768843902,
|
||||||
|
|||||||
Reference in New Issue
Block a user